Changeset 51460 in vbox for trunk/src/VBox
- Timestamp:
- May 29, 2014 12:44:48 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 94030
- Location:
- trunk/src/VBox/Main
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/include/DisplayImpl.h
r51436 r51460 371 371 void vbvaReleaseCmd(VBVACMDHDR *pHdr, int32_t cbCmd); 372 372 373 void handleResizeCompletedEMT(unsigned uScreenId );373 void handleResizeCompletedEMT(unsigned uScreenId, BOOL fResizeContext); 374 374 375 375 RTCRITSECT mVBVALock; … … 390 390 int crCtlSubmit(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, PFNCRCTLCOMPLETION pfnCompletion, void *pvCompletion); 391 391 int crCtlSubmitSync(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd); 392 /* copies the given command and submits it asynchronously, 393 * i.e. the pCmd data may be discarded right after the call returns */ 394 int crCtlSubmitAsyncCmdCopy(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd); 392 395 /* performs synchronous request processing if 3D backend has something to display 393 396 * this is primarily to work-around 3d<->main thread deadlocks on OSX -
trunk/src/VBox/Main/src-client/DisplayImpl.cpp
r51441 r51460 1043 1043 1044 1044 /* The method also unlocks the framebuffer. */ 1045 handleResizeCompletedEMT(uScreenId );1045 handleResizeCompletedEMT(uScreenId, TRUE); 1046 1046 1047 1047 return VINF_SUCCESS; … … 1054 1054 * @thread EMT 1055 1055 */ 1056 void Display::handleResizeCompletedEMT(unsigned uScreenId )1056 void Display::handleResizeCompletedEMT(unsigned uScreenId, BOOL fResizeContext) 1057 1057 { 1058 1058 LogRelFlowFunc(("\n")); … … 1161 1161 data.aParms[0].u.uint32 = uScreenId; 1162 1162 1163 crCtlSubmitSync(&data.Hdr, sizeof (data)); 1163 if (fResizeContext) 1164 crCtlSubmitAsyncCmdCopy(&data.Hdr, sizeof (data)); 1165 else 1166 crCtlSubmitSync(&data.Hdr, sizeof (data)); 1164 1167 } 1165 1168 } … … 4089 4092 fNoUpdate = true; /* Always set it here, because pfnUpdateDisplayAll can cause a new resize. */ 4090 4093 /* The framebuffer was resized and display data need to be updated. */ 4091 pDisplay->handleResizeCompletedEMT(uScreenId );4094 pDisplay->handleResizeCompletedEMT(uScreenId, FALSE); 4092 4095 if (pFBInfo->u32ResizeStatus != ResizeStatus_Void) 4093 4096 { … … 4744 4747 } 4745 4748 4746 int Display::crCtlSubmitSyncIfHasDataForScreen(uint32_t u32ScreenID, struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd) 4747 { 4748 if (mCrOglCallbacks.pfnHasDataForScreen(u32ScreenID)) 4749 return crCtlSubmitSync(pCmd, cbCmd); 4750 4749 int Display::crCtlSubmitAsyncCmdCopy(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd) 4750 { 4751 4751 VBOXCRCMDCTL* pCmdCopy = (VBOXCRCMDCTL*)RTMemAlloc(cbCmd); 4752 4752 if (!pCmdCopy) … … 4767 4767 4768 4768 return VINF_SUCCESS; 4769 } 4770 4771 int Display::crCtlSubmitSyncIfHasDataForScreen(uint32_t u32ScreenID, struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd) 4772 { 4773 if (mCrOglCallbacks.pfnHasDataForScreen(u32ScreenID)) 4774 return crCtlSubmitSync(pCmd, cbCmd); 4775 4776 return crCtlSubmitAsyncCmdCopy(pCmd, cbCmd); 4769 4777 } 4770 4778
Note:
See TracChangeset
for help on using the changeset viewer.