VirtualBox

Changeset 50178 in vbox for trunk/src/VBox/Main/src-client


Ignore:
Timestamp:
Jan 23, 2014 12:04:44 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
91742
Message:

crOpenGL: seamless and resize bugfixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/DisplayImpl.cpp

    r50149 r50178  
    670670            if (pVMMDev)
    671671            {
    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;
    681689            }
    682690        }
     
    40624070    pDisplay->handleCrHgsmiControlCompletion(result, u32Function, pParam);
    40634071}
     4072#endif
     4073
     4074#if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL)
     4075DECLCALLBACK(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
     4082void  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
    40644088#endif
    40654089
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette