Changeset 46123 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- May 16, 2013 1:40:20 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 85814
- Location:
- trunk/src/VBox/Frontends/VBoxManage
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
r45190 r46123 1301 1301 } 1302 1302 int vrc; 1303 uint32_t displayIdx= 0;1303 uint32_t iScreen = 0; 1304 1304 if (a->argc == 4) 1305 1305 { 1306 vrc = RTStrToUInt32Ex(a->argv[3], NULL, 0, & displayIdx);1306 vrc = RTStrToUInt32Ex(a->argv[3], NULL, 0, &iScreen); 1307 1307 if (vrc != VINF_SUCCESS) 1308 1308 { … … 1321 1321 } 1322 1322 ULONG width, height, bpp; 1323 CHECK_ERROR_BREAK(pDisplay, GetScreenResolution( displayIdx, &width, &height, &bpp));1323 CHECK_ERROR_BREAK(pDisplay, GetScreenResolution(iScreen, &width, &height, &bpp)); 1324 1324 com::SafeArray<BYTE> saScreenshot; 1325 CHECK_ERROR_BREAK(pDisplay, TakeScreenShotPNGToArray( displayIdx, width, height, ComSafeArrayAsOutParam(saScreenshot)));1325 CHECK_ERROR_BREAK(pDisplay, TakeScreenShotPNGToArray(iScreen, width, height, ComSafeArrayAsOutParam(saScreenshot))); 1326 1326 RTFILE pngFile = NIL_RTFILE; 1327 1327 vrc = RTFileOpen(&pngFile, a->argv[2], RTFILE_O_OPEN_CREATE | RTFILE_O_WRITE | RTFILE_O_TRUNCATE | RTFILE_O_DENY_ALL); … … 1340 1340 RTFileClose(pngFile); 1341 1341 } 1342 else if ( !strcmp(a->argv[1], "enablevideocapture") 1343 || !strcmp(a->argv[1], "disablevideocapture")) 1344 { 1345 ULONG cMonitors = 64; 1346 CHECK_ERROR_BREAK(machine, COMGETTER(MonitorCount)(&cMonitors)); 1347 com::SafeArray<BOOL> saScreenIds(cMonitors); 1348 if (a->argc < 3) 1349 { 1350 /* default: handle all screens */ 1351 for (unsigned i = 0; i < cMonitors; i++) 1352 saScreenIds[i] = true; 1353 } 1354 else 1355 { 1356 /* handle selected screens */ 1357 for (unsigned i = 0; i < cMonitors; i++) 1358 saScreenIds[i] = false; 1359 for (int i = 2; SUCCEEDED(rc) && i < a->argc; i++) 1360 { 1361 uint32_t iScreen; 1362 int vrc = RTStrToUInt32Ex(a->argv[i], NULL, 0, &iScreen); 1363 RTPrintf("i = %d => %d => %Rrc\n", i, iScreen, vrc); 1364 if (vrc != VINF_SUCCESS) 1365 { 1366 errorArgument("Error parsing display number '%s'", a->argv[i]); 1367 rc = E_FAIL; 1368 break; 1369 } 1370 if (iScreen >= cMonitors) 1371 { 1372 errorArgument("Invalid screen ID specified '%u'", iScreen); 1373 rc = E_FAIL; 1374 break; 1375 } 1376 saScreenIds[iScreen] = true; 1377 } 1378 } 1379 for (unsigned i = 0; i < cMonitors; i++) 1380 RTPrintf(" %d\n", saScreenIds[i]); 1381 ComPtr<IDisplay> pDisplay; 1382 CHECK_ERROR_BREAK(console, COMGETTER(Display)(pDisplay.asOutParam())); 1383 if (!pDisplay) 1384 { 1385 RTMsgError("Guest not running"); 1386 rc = E_FAIL; 1387 break; 1388 } 1389 if (!strcmp(a->argv[1], "enablevideocapture")) 1390 CHECK_ERROR_BREAK(pDisplay, EnableVideoCapture(ComSafeArrayAsInParam(saScreenIds))); 1391 else 1392 CHECK_ERROR_BREAK(pDisplay, DisableVideoCapture(ComSafeArrayAsInParam(saScreenIds))); 1393 } 1342 1394 else 1343 1395 { -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
r46036 r46123 371 371 #ifdef VBOX_WITH_VPX 372 372 " [--vcpenabled on|off]\n" 373 " [--vcpscreens [<display>],...\n" 373 374 " [--vcpfile <filename>]\n" 374 375 " [--vcpwidth <width>]\n" … … 468 469 " [<xorigin> <yorigin>]]] |\n" 469 470 " screenshotpng <file> [display] |\n" 471 " enablevideocapture <screen>,[<screen>...]\n" 472 " disablevideocapture <screen>,[<screen>...]\n" 470 473 " setcredentials <username>\n" 471 474 " --passwordfile <file> | <password>\n" -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp
r46036 r46123 2306 2306 BOOL bActive = FALSE; 2307 2307 CHECK_ERROR_RET(machine, COMGETTER(VideoCaptureEnabled)(&bActive), rc); 2308 com::SafeArray<BOOL> screens; 2309 CHECK_ERROR_RET(machine, COMGETTER(VideoCaptureScreens)(ComSafeArrayAsOutParam(screens)), rc); 2308 2310 ULONG Width; 2309 2311 CHECK_ERROR_RET(machine, COMGETTER(VideoCaptureWidth)(&Width), rc); … … 2319 2321 { 2320 2322 RTPrintf("VideoCaptureEnabled=\"%s\"\n", bActive ? "on" : "off"); 2323 RTPrintf("VideoCaptureScreens="); 2324 bool fComma = false; 2325 for (unsigned i = 0; i < screens.size(); i++) 2326 if (screens[i]) 2327 { 2328 RTPrintf("%s%u", fComma ? "," : "", i); 2329 fComma = true; 2330 } 2331 RTPrintf("\n"); 2321 2332 RTPrintf("VideoCaptureWidth=%u\n", (unsigned)Width); 2322 2333 RTPrintf("VideoCaptureFile=\"%ls\"\n", File.raw()); … … 2328 2339 { 2329 2340 RTPrintf("Video capturing: %s\n", bActive ? "active" : "not active"); 2341 RTPrintf("Capture screens: "); 2342 bool fComma = false; 2343 for (unsigned i = 0; i < screens.size(); i++) 2344 if (screens[i]) 2345 { 2346 RTPrintf("%s%u", fComma ? "," : "", i); 2347 fComma = true; 2348 } 2349 RTPrintf("\n"); 2330 2350 RTPrintf("Capture file: %ls\n", File.raw()); 2331 2351 RTPrintf("Capture dimensions: %ux%u\n", Width, Height); 2332 RTPrintf("Capture rate: %u kbps\n", Rate);2352 RTPrintf("Capture rate: %u kbps\n", Rate); 2333 2353 RTPrintf("Capture FPS: %u\n", Fps); 2334 2354 RTPrintf("\n"); -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
r46036 r46123 196 196 #ifdef VBOX_WITH_VPX 197 197 MODIFYVM_VCP, 198 MODIFYVM_VCP_SCREENS, 198 199 MODIFYVM_VCP_FILENAME, 199 200 MODIFYVM_VCP_WIDTH, … … 344 345 #ifdef VBOX_WITH_VPX 345 346 { "--vcpenabled", MODIFYVM_VCP, RTGETOPT_REQ_BOOL_ONOFF }, 347 { "--vcpscreens", MODIFYVM_VCP_SCREENS, RTGETOPT_REQ_STRING }, 346 348 { "--vcpfile", MODIFYVM_VCP_FILENAME, RTGETOPT_REQ_STRING }, 347 349 { "--vcpwidth", MODIFYVM_VCP_WIDTH, RTGETOPT_REQ_UINT32 }, … … 409 411 } 410 412 } 413 } 414 415 int parseScreens(const char *pcszScreens, com::SafeArray<BOOL> *pScreens) 416 { 417 while (pcszScreens && *pcszScreens) 418 { 419 char *pszNext; 420 uint32_t iScreen; 421 int rc = RTStrToUInt32Ex(pcszScreens, &pszNext, 0, &iScreen); 422 if (RT_FAILURE(rc)) 423 return 1; 424 if (iScreen >= pScreens->size()) 425 return 1; 426 if (pszNext && *pszNext) 427 { 428 pszNext = RTStrStripL(pszNext); 429 if (*pszNext != ',') 430 return 1; 431 pszNext++; 432 } 433 (*pScreens)[iScreen] = true; 434 pcszScreens = pszNext; 435 } 436 return 0; 411 437 } 412 438 … … 2449 2475 break; 2450 2476 } 2477 case MODIFYVM_VCP_SCREENS: 2478 { 2479 ULONG cMonitors = 64; 2480 CHECK_ERROR(machine, COMGETTER(MonitorCount)(&cMonitors)); 2481 com::SafeArray<BOOL> screens(cMonitors); 2482 if (parseScreens(ValueUnion.psz, &screens)) 2483 { 2484 errorArgument("Invalid list of screens specified\n"); 2485 rc = E_FAIL; 2486 break; 2487 } 2488 CHECK_ERROR(machine, COMSETTER(VideoCaptureScreens)(ComSafeArrayAsInParam(screens))); 2489 break; 2490 } 2451 2491 case MODIFYVM_VCP_FILENAME: 2452 2492 {
Note:
See TracChangeset
for help on using the changeset viewer.