VirtualBox

Ignore:
Timestamp:
Apr 21, 2014 8:10:29 AM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
93405
Message:

crOpenGL: keep regions data on regions cleanup

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp

    r51101 r51109  
    13331333}
    13341334
     1335static int8_t crVBoxServerCrCmdBltPrimaryVramGenericProcess(uint32_t u32PrimaryID, VBOXCMDVBVAOFFSET offVRAM, uint32_t width, uint32_t height, uint32_t xPos, uint32_t yPos, const RTRECT *pRects, uint32_t cRects, bool fToPrimary);
     1336
    13351337int CrFbRegionsClear(HCR_FRAMEBUFFER hFb)
    13361338{
     
    13411343    }
    13421344
     1345    uint32_t cRegions;
     1346    const RTRECT *pRegions;
     1347    int rc = CrVrScrCompositorRegionsGet(&hFb->Compositor, &cRegions, NULL, NULL, &pRegions);
     1348    if (!RT_SUCCESS(rc))
     1349    {
     1350        WARN(("CrVrScrCompositorEntryRegionsGet failed rc %d", rc));
     1351        return rc;
     1352    }
     1353
     1354    const struct VBVAINFOSCREEN* pScreen = CrFbGetScreenInfo(hFb);
     1355    VBOXCMDVBVAOFFSET offVRAM = (VBOXCMDVBVAOFFSET)(((uintptr_t)CrFbGetVRAM(hFb)) - ((uintptr_t)g_pvVRamBase));
     1356    int8_t i8Result = crVBoxServerCrCmdBltPrimaryVramGenericProcess(pScreen->u32ViewIndex, offVRAM, pScreen->u32Width, pScreen->u32Height, 0, 0, pRegions, cRegions, false);
     1357    if (i8Result)
     1358    {
     1359        WARN(("crVBoxServerCrCmdBltPrimaryVramGenericProcess failed"));
     1360        return VERR_INTERNAL_ERROR;
     1361    }
     1362
     1363#ifdef DEBUG
     1364    {
     1365        uint32_t cTmpRegions;
     1366        const RTRECT *pTmpRegions;
     1367        int tmpRc = CrVrScrCompositorRegionsGet(&hFb->Compositor, &cTmpRegions, NULL, NULL, &pTmpRegions);
     1368        if (!RT_SUCCESS(tmpRc))
     1369        {
     1370            WARN(("CrVrScrCompositorEntryRegionsGet failed rc %d", tmpRc));
     1371        }
     1372        Assert(!cTmpRegions);
     1373    }
     1374#endif
     1375
     1376    /* just in case */
    13431377    bool fChanged = false;
    13441378    CrVrScrCompositorRegionsClear(&hFb->Compositor, &fChanged);
    1345     if (fChanged)
     1379    Assert(!fChanged);
     1380
     1381    if (cRegions)
    13461382    {
    13471383        if (hFb->pDisplay)
     
    44514487            AssertRCReturn(rc, rc);
    44524488
    4453             rc = SSMR3PutU32(pSSM, (uint32_t)(((uintptr_t)hFb->pvVram) - ((uintptr_t)g_pvVRamBase)));
     4489            rc = SSMR3PutU32(pSSM, (uint32_t)(((uintptr_t)CrFbGetVRAM(hFb)) - ((uintptr_t)g_pvVRamBase)));
    44544490            AssertRCReturn(rc, rc);
    44554491
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