Changeset 50178 in vbox
- Timestamp:
- Jan 23, 2014 12:04:44 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/HostServices/VBoxCrOpenGLSvc.h
r50149 r50178 32 32 #include <VBox/VBoxGuest2.h> 33 33 #include <VBox/hgcmsvc.h> 34 #include <VBox/VBoxVideo.h> 34 35 35 36 /* crOpenGL host functions */ … … 361 362 } CRVBOXHGCMWRITEREADBUFFERED; 362 363 364 365 typedef struct 366 { 367 VBVAINFOSCREEN Screen; 368 void *pvVRAM; 369 } CRVBOXHGCMDEVRESIZE; 370 363 371 #endif -
trunk/src/VBox/GuestHost/OpenGL/include/cr_server.h
r50149 r50178 531 531 extern DECLEXPORT(void) crServerVBoxCompositionSetEnableStateGlobal(GLboolean fEnable); 532 532 struct VBVAINFOSCREEN; 533 extern DECLEXPORT(int) crVBoxServerNotifyResize( uint32_t idScreen);533 extern DECLEXPORT(int) crVBoxServerNotifyResize(const struct VBVAINFOSCREEN *pScreen, void *pvVRAM); 534 534 extern DECLEXPORT(int32_t) crVBoxServerSetRootVisibleRegion(GLint cRects, const RTRECT *pRects); 535 535 -
trunk/src/VBox/GuestHost/OpenGL/util/compositor.cpp
r50095 r50178 409 409 if (fAdjusted) 410 410 { 411 fChangeFlags &= ~VBOXVR_COMPOSITOR_CF_ENTRY_REPLACED; 412 fChangeFlags |= VBOXVR_COMPOSITOR_CF_REGIONS_CHANGED | VBOXVR_COMPOSITOR_CF_ENTRY_REGIONS_CHANGED; 411 if (CrVrScrCompositorEntryIsUsed(pEntry)) 412 { 413 fChangeFlags &= ~VBOXVR_COMPOSITOR_CF_ENTRY_REPLACED; 414 fChangeFlags |= VBOXVR_COMPOSITOR_CF_REGIONS_CHANGED | VBOXVR_COMPOSITOR_CF_ENTRY_REGIONS_CHANGED; 415 } 416 else 417 { 418 fChangeFlags = 0; 419 } 413 420 } 414 421 } -
trunk/src/VBox/GuestHost/OpenGL/util/htable.cpp
r50095 r50178 95 95 pTbl->cData = 0; 96 96 pTbl->iNext2Search = 0; 97 if (pTbl->cSize) 98 memset(pTbl->paData, 0, sizeof (pTbl->paData[0]) * pTbl->cSize); 97 99 } 98 100 … … 159 161 { 160 162 void* pvData = pTbl->paData[iIndex]; 161 pTbl->paData[iIndex] = NULL; 162 --pTbl->cData; 163 Assert(pTbl->cData <= pTbl->cSize); 164 pTbl->iNext2Search = iIndex; 163 if (pvData) 164 { 165 pTbl->paData[iIndex] = NULL; 166 --pTbl->cData; 167 Assert(pTbl->cData <= pTbl->cSize); 168 pTbl->iNext2Search = iIndex; 169 } 165 170 return pvData; 166 171 } … … 172 177 { 173 178 uint32_t iIndex = crHTableHandle2Index(hHandle); 174 Assert(iIndex < pTbl->cSize);175 179 if (iIndex < pTbl->cSize) 176 180 return pTbl->paData[iIndex]; 177 WARN(("invalid handle supplied %d", hHandle));181 LOG(("invalid handle supplied %d", hHandle)); 178 182 return NULL; 179 183 } -
trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
r50149 r50178 1186 1186 } 1187 1187 1188 for (int i = 0; i < SHCRGL_CPARMS_DEV_RESIZE; ++i) 1189 { 1190 if (paParms[i].type != VBOX_HGCM_SVC_PARM_32BIT) 1191 { 1192 AssertMsgFailed(("invalid param\n")); 1193 return VERR_INVALID_PARAMETER; 1194 } 1195 } 1196 1197 rc = crVBoxServerNotifyResize(paParms[0].u.uint32); 1188 if (paParms->type != VBOX_HGCM_SVC_PARM_PTR) 1189 { 1190 AssertMsgFailed(("invalid param\n")); 1191 return VERR_INVALID_PARAMETER; 1192 } 1193 1194 if (!paParms->u.pointer.addr) 1195 { 1196 AssertMsgFailed(("invalid param\n")); 1197 return VERR_INVALID_PARAMETER; 1198 } 1199 1200 if (paParms->u.pointer.size != sizeof (CRVBOXHGCMDEVRESIZE)) 1201 { 1202 AssertMsgFailed(("invalid param\n")); 1203 return VERR_INVALID_PARAMETER; 1204 } 1205 1206 CRVBOXHGCMDEVRESIZE *pResize = (CRVBOXHGCMDEVRESIZE*)paParms->u.pointer.addr; 1207 1208 rc = crVBoxServerNotifyResize(&pResize->Screen, pResize->pvVRAM); 1198 1209 break; 1199 1210 } -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_muralfbo.cpp
r50149 r50178 430 430 } 431 431 432 DECLEXPORT(int) crVBoxServerNotifyResize(uint32_t idScreen) 433 { 434 struct VBVAINFOSCREEN Screen; 435 void *pvVRAM; 436 437 int rc = cr_server.CltInfo.pfnDmGet(cr_server.CltInfo.hClient, idScreen, &Screen, &pvVRAM); 438 if (!RT_SUCCESS(rc)) 439 { 440 WARN(("err")); 441 return rc; 442 } 443 444 rc = crVBoxServerResizeScreen(&Screen, pvVRAM); 432 DECLEXPORT(int) crVBoxServerNotifyResize(const struct VBVAINFOSCREEN *pScreen, void *pvVRAM) 433 { 434 int rc = crVBoxServerResizeScreen(pScreen, pvVRAM); 445 435 if (!RT_SUCCESS(rc)) 446 436 { -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp
r50161 r50178 248 248 return VINF_SUCCESS; 249 249 250 CrHTableEmpty(&pFb->SlotTable);251 252 250 pFb->pDisplay = pDisplay; 253 251 … … 288 286 #define CR_PMGR_MODE_ALL 0x7 289 287 290 static int crPMgrModeModifyGlobal(uint32_t u32Mode , bool fEnable);288 static int crPMgrModeModifyGlobal(uint32_t u32ModeAdd, uint32_t u32ModeRemove); 291 289 292 290 static CR_FBTEX* crFbTexAlloc() … … 412 410 if (!pTobj) 413 411 { 414 WARN(("pTobj is null!"));412 LOG(("pTobj is null!")); 415 413 crStateGlobalSharedRelease(); 416 414 return NULL; … … 573 571 if (!pFbTex) 574 572 { 575 WARN(("crFbTexAcquire failed"));573 LOG(("crFbTexAcquire failed")); 576 574 return VERR_INVALID_PARAMETER; 577 575 } … … 1008 1006 { 1009 1007 mFlags.fRegionsShanged = 0; 1010 ueRegions(); 1008 if (getFramebuffer()) /*<-dont't do anything on cleanup*/ 1009 ueRegions(); 1011 1010 } 1012 1011 } … … 2243 2242 { 2244 2243 CrVrScrCompositorClear(&mCompositor); 2244 2245 2245 int rc = CrVrScrCompositorRectSet(&mCompositor, CrVrScrCompositorRectGet(CrFbGetCompositor(getFramebuffer())), NULL); 2246 2246 if (!RT_SUCCESS(rc)) … … 2833 2833 { 2834 2834 #endif 2835 rc = crPMgrModeModifyGlobal(CR_PMGR_MODE_WINDOW, true);2835 rc = crPMgrModeModifyGlobal(CR_PMGR_MODE_WINDOW, 0); 2836 2836 if (RT_SUCCESS(rc)) 2837 2837 return VINF_SUCCESS; … … 2865 2865 void CrPMgrTerm() 2866 2866 { 2867 crPMgrModeModifyGlobal( CR_PMGR_MODE_ALL, false);2867 crPMgrModeModifyGlobal(0, CR_PMGR_MODE_ALL); 2868 2868 2869 2869 HCR_FRAMEBUFFER hFb; … … 3185 3185 } 3186 3186 3187 static int crPMgrModeModifyGlobal(uint32_t u32Mode, bool fEnable) 3188 { 3189 uint32_t u32ModeAdd, u32ModeRemove; 3190 if (fEnable) 3191 { 3192 u32ModeAdd = u32Mode; 3193 u32ModeRemove = 0; 3194 } 3195 else 3196 { 3197 u32ModeAdd = 0; 3198 u32ModeRemove = u32Mode; 3199 } 3200 3187 static int crPMgrModeModifyGlobal(uint32_t u32ModeAdd, uint32_t u32ModeRemove) 3188 { 3201 3189 g_CrPresenter.u32DisplayMode = (g_CrPresenter.u32DisplayMode | u32ModeAdd) & ~u32ModeRemove; 3202 3190 … … 3213 3201 int CrPMgrModeVrdp(bool fEnable) 3214 3202 { 3215 return crPMgrModeModifyGlobal(CR_PMGR_MODE_VRDP, fEnable); 3203 uint32_t u32ModeAdd, u32ModeRemove; 3204 if (fEnable) 3205 { 3206 u32ModeAdd = CR_PMGR_MODE_VRDP; 3207 u32ModeRemove = 0; 3208 } 3209 else 3210 { 3211 u32ModeAdd = 0; 3212 u32ModeRemove = CR_PMGR_MODE_VRDP; 3213 } 3214 return crPMgrModeModifyGlobal(u32ModeAdd, u32ModeRemove); 3216 3215 } 3217 3216 3218 3217 int CrPMgrModeRootVr(bool fEnable) 3219 3218 { 3220 return crPMgrModeModifyGlobal(CR_PMGR_MODE_ROOTVR, fEnable); 3219 uint32_t u32ModeAdd, u32ModeRemove; 3220 if (fEnable) 3221 { 3222 u32ModeAdd = CR_PMGR_MODE_ROOTVR; 3223 u32ModeRemove = CR_PMGR_MODE_WINDOW; 3224 } 3225 else 3226 { 3227 u32ModeAdd = CR_PMGR_MODE_WINDOW; 3228 u32ModeRemove = CR_PMGR_MODE_ROOTVR; 3229 } 3230 3231 return crPMgrModeModifyGlobal(u32ModeAdd, u32ModeRemove); 3221 3232 } 3222 3233 … … 3677 3688 if (!RT_SUCCESS(rc)) 3678 3689 { 3679 WARN(("CrFbEntryCreateForTexId Failed"));3690 LOG(("CrFbEntryCreateForTexId Failed")); 3680 3691 return; 3681 3692 } -
trunk/src/VBox/Main/include/DisplayImpl.h
r50095 r50178 170 170 void handleCrHgsmiControlCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam); 171 171 #endif 172 173 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 174 void handleCrAsyncCmdCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam); 175 #endif 176 172 177 int notifyCroglResize(const PVBVAINFOVIEW pView, const PVBVAINFOSCREEN pScreen, void *pvVRAM); 173 178 … … 267 272 #endif 268 273 274 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 275 static DECLCALLBACK(void) displayCrAsyncCmdCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext); 276 #endif 277 269 278 static DECLCALLBACK(void) displaySSMSaveScreenshot(PSSMHANDLE pSSM, void *pvUser); 270 279 static DECLCALLBACK(int) displaySSMLoadScreenshot(PSSMHANDLE pSSM, void *pvUser, uint32_t uVersion, uint32_t uPass); -
trunk/src/VBox/Main/src-client/DisplayImpl.cpp
r50149 r50178 670 670 if (pVMMDev) 671 671 { 672 VBOXHGCMSVCPARM parm[SHCRGL_CPARMS_DEV_RESIZE]; 673 674 parm[0].type = VBOX_HGCM_SVC_PARM_32BIT; 675 parm[0].u.uint32 = pScreen->u32ViewIndex; 676 677 /* no completion callback is specified with this call, 678 * the CrOgl code will complete the CrHgsmi command once it processes it */ 679 rc = pVMMDev->hgcmHostFastCallAsync(mhCrOglSvc, SHCRGL_HOST_FN_DEV_RESIZE, parm, NULL, NULL); 680 AssertRC(rc); 672 CRVBOXHGCMDEVRESIZE *pData = (CRVBOXHGCMDEVRESIZE*)RTMemAlloc(sizeof (*pData)); 673 if (pData) 674 { 675 pData->Screen = *pScreen; 676 pData->pvVRAM = pvVRAM; 677 678 VBOXHGCMSVCPARM parm; 679 680 parm.type = VBOX_HGCM_SVC_PARM_PTR; 681 parm.u.pointer.addr = pData; 682 parm.u.pointer.size = sizeof (*pData); 683 684 rc = pVMMDev->hgcmHostFastCallAsync(mhCrOglSvc, SHCRGL_HOST_FN_DEV_RESIZE, &parm, displayCrAsyncCmdCompletion, this); 685 AssertRC(rc); 686 } 687 else 688 rc = VERR_NO_MEMORY; 681 689 } 682 690 } … … 4062 4070 pDisplay->handleCrHgsmiControlCompletion(result, u32Function, pParam); 4063 4071 } 4072 #endif 4073 4074 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 4075 DECLCALLBACK(void) Display::displayCrAsyncCmdCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext) 4076 { 4077 Display *pDisplay = (Display *)pvContext; 4078 pDisplay->handleCrAsyncCmdCompletion(result, u32Function, pParam); 4079 } 4080 4081 4082 void Display::handleCrAsyncCmdCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam) 4083 { 4084 if (pParam->type == VBOX_HGCM_SVC_PARM_PTR && pParam->u.pointer.addr) 4085 RTMemFree(pParam->u.pointer.addr); 4086 } 4087 4064 4088 #endif 4065 4089
Note:
See TracChangeset
for help on using the changeset viewer.