Changeset 50394 in vbox
- Timestamp:
- Feb 10, 2014 3:33:47 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
-
include/VBox/HostServices/VBoxCrOpenGLSvc.h (modified) (1 diff)
-
src/VBox/GuestHost/OpenGL/include/cr_server.h (modified) (1 diff)
-
src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp (modified) (1 diff)
-
src/VBox/HostServices/SharedOpenGL/crserverlib/server.h (modified) (1 diff)
-
src/VBox/HostServices/SharedOpenGL/crserverlib/server_muralfbo.cpp (modified) (2 diffs)
-
src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp (modified) (4 diffs)
-
src/VBox/Main/include/DisplayImpl.h (modified) (2 diffs)
-
src/VBox/Main/src-client/DisplayImpl.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/HostServices/VBoxCrOpenGLSvc.h
r50364 r50394 49 49 #define SHCRGL_HOST_FN_VIEWPORT_CHANGED2 (23) 50 50 #define SHCRGL_HOST_FN_TAKE_SCREENSHOT (24) 51 #define SHCRGL_HOST_FN_WINDOWS_SHOW (25) 51 52 /* crOpenGL guest functions */ 52 53 #define SHCRGL_GUEST_FN_WRITE (2) -
trunk/src/VBox/GuestHost/OpenGL/include/cr_server.h
r50364 r50394 526 526 } CR_SCREENSHOT; 527 527 528 extern DECLEXPORT(int) crServerVBoxWindowsShow(bool fShow); 528 529 extern DECLEXPORT(int) crServerVBoxScreenshotGet(uint32_t u32Screen, uint32_t width, uint32_t height, uint32_t pitch, void *pvBuffer, CR_SCREENSHOT *pScreenshot); 529 530 extern DECLEXPORT(void) crServerVBoxScreenshotRelease(CR_SCREENSHOT *pScreenshot); -
trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
r50364 r50394 1445 1445 break; 1446 1446 } 1447 case SHCRGL_HOST_FN_WINDOWS_SHOW: 1448 { 1449 /* Verify parameter count and types. */ 1450 if (cParms != 1) 1451 { 1452 WARN(("invalid parameter")); 1453 rc = VERR_INVALID_PARAMETER; 1454 break; 1455 } 1456 1457 if (paParms[0].type != VBOX_HGCM_SVC_PARM_32BIT) 1458 { 1459 WARN(("invalid parameter")); 1460 rc = VERR_INVALID_PARAMETER; 1461 break; 1462 } 1463 1464 rc = crServerVBoxWindowsShow(paParms[0].u.uint32); 1465 if (!RT_SUCCESS(rc)) 1466 WARN(("crServerVBoxWindowsShow failed rc %d", rc)); 1467 1468 break; 1469 } 1447 1470 default: 1448 1471 rc = VERR_NOT_IMPLEMENTED; -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server.h
r50364 r50394 408 408 int CrPMgrModeVrdp(bool fEnable); 409 409 int CrPMgrModeRootVr(bool fEnable); 410 int CrPMgrModeWinVisible(bool fEnable); 410 411 int CrPMgrRootVrUpdate(); 411 412 int CrPMgrViewportUpdate(uint32_t idScreen); -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_muralfbo.cpp
r50364 r50394 746 746 747 747 return VINF_SUCCESS; 748 } 749 750 extern DECLEXPORT(int) crServerVBoxWindowsShow(bool fShow) 751 { 752 return CrPMgrModeWinVisible(fShow); 748 753 } 749 754 … … 829 834 Assert(mural->aidColorTexs[CR_SERVER_FBO_FB_IDX(mural)]); 830 835 } 836 -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp
r50378 r50394 136 136 CR_FBMAP FramebufferInitMap; 137 137 CR_FRAMEBUFFER aFramebuffers[CR_MAX_GUEST_MONITORS]; 138 bool fWindowsForceHidden; 138 139 uint32_t cbTmpBuf; 139 140 void *pvTmpBuf; … … 2434 2435 } 2435 2436 2437 int winVisibilityChanged() 2438 { 2439 int rc = mpWindow->UpdateBegin(); 2440 if (RT_SUCCESS(rc)) 2441 { 2442 rc = mpWindow->SetVisible(!g_CrPresenter.fWindowsForceHidden); 2443 if (!RT_SUCCESS(rc)) 2444 WARN(("SetVisible failed, rc %d", rc)); 2445 2446 mpWindow->UpdateEnd(); 2447 } 2448 else 2449 WARN(("UpdateBegin failed, rc %d", rc)); 2450 2451 return rc; 2452 } 2453 2436 2454 protected: 2437 2455 virtual void onUpdateEnd() … … 2564 2582 } 2565 2583 2566 rc = mpWindow->SetVisible( true);2584 rc = mpWindow->SetVisible(!g_CrPresenter.fWindowsForceHidden); 2567 2585 if (!RT_SUCCESS(rc)) 2568 2586 { … … 3820 3838 } 3821 3839 3840 int CrPMgrModeWinVisible(bool fEnable) 3841 { 3842 if (!g_CrPresenter.fWindowsForceHidden == !!fEnable) 3843 return VINF_SUCCESS; 3844 3845 g_CrPresenter.fWindowsForceHidden = !fEnable; 3846 3847 for (HCR_FRAMEBUFFER hFb = CrPMgrFbGetFirstEnabled(); 3848 hFb; 3849 hFb = CrPMgrFbGetNextEnabled(hFb)) 3850 { 3851 uint32_t idScreen = CrFbGetScreenInfo(hFb)->u32ViewIndex; 3852 3853 CR_FBDISPLAY_INFO *pInfo = &g_CrPresenter.aDisplayInfos[idScreen]; 3854 3855 if (pInfo->pDpWin) 3856 pInfo->pDpWin->winVisibilityChanged(); 3857 } 3858 3859 return VINF_SUCCESS; 3860 } 3861 3822 3862 int CrPMgrRootVrUpdate() 3823 3863 { -
trunk/src/VBox/Main/include/DisplayImpl.h
r50364 r50394 331 331 bool mfPendingVideoAccelEnable; 332 332 bool mfMachineRunning; 333 #ifdef VBOX_WITH_CROGL 334 bool mfCrOglDataHidden; 335 #endif 333 336 334 337 uint8_t *mpu8VbvaPartial; … … 377 380 void videoAccelFlush(void); 378 381 382 #ifdef VBOX_WITH_CROGL 383 int crOglWindowsShow(bool fShow); 384 #endif 385 379 386 #ifdef VBOX_WITH_HGSMI 380 387 volatile uint32_t mu32UpdateVBVAFlags; -
trunk/src/VBox/Main/src-client/DisplayImpl.cpp
r50364 r50394 116 116 117 117 mfMachineRunning = false; 118 #ifdef VBOX_WITH_CROGL 119 mfCrOglDataHidden = false; 120 #endif 118 121 119 122 mpu8VbvaPartial = NULL; … … 617 620 } 618 621 622 #ifdef VBOX_WITH_CROGL 623 int Display::crOglWindowsShow(bool fShow) 624 { 625 if (!mfCrOglDataHidden == !!fShow) 626 return VINF_SUCCESS; 627 628 VMMDev *pVMMDev = mParent->getVMMDev(); 629 if (!pVMMDev) 630 { 631 AssertMsgFailed(("no vmmdev\n")); 632 return VERR_INVALID_STATE; 633 } 634 635 if (!mhCrOglSvc) 636 { 637 AssertMsgFailed(("no mhCrOglSvc\n")); 638 return VERR_INVALID_STATE; 639 } 640 641 VBOXHGCMSVCPARM parm; 642 643 parm.type = VBOX_HGCM_SVC_PARM_32BIT; 644 parm.u.uint32 = (uint32_t)fShow; 645 646 int rc = pVMMDev->hgcmHostFastCallAsync(mhCrOglSvc, SHCRGL_HOST_FN_WINDOWS_SHOW, &parm, NULL, NULL); 647 if (RT_SUCCESS(rc)) 648 mfCrOglDataHidden = !fShow; 649 else 650 AssertMsgFailed(("hgcmHostFastCallAsync failed rc %n", rc)); 651 652 return rc; 653 } 654 #endif 655 656 619 657 // IEventListener method 620 658 STDMETHODIMP Display::HandleEvent(IEvent * aEvent) … … 639 677 640 678 mfMachineRunning = true; 679 680 #ifdef VBOX_WITH_CROGL 681 crOglWindowsShow(true); 682 #endif 641 683 } 642 684 else 685 { 643 686 mfMachineRunning = false; 687 688 #ifdef VBOX_WITH_CROGL 689 if (machineState == MachineState_Paused) 690 crOglWindowsShow(false); 691 #endif 692 } 644 693 break; 645 694 }
Note:
See TracChangeset
for help on using the changeset viewer.

