VirtualBox

Changeset 50178 in vbox for trunk/src/VBox/HostServices


Ignore:
Timestamp:
Jan 23, 2014 12:04:44 PM (11 years ago)
Author:
vboxsync
Message:

crOpenGL: seamless and resize bugfixes

Location:
trunk/src/VBox/HostServices/SharedOpenGL
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp

    r50149 r50178  
    11861186            }
    11871187
    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);
    11981209            break;
    11991210        }
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_muralfbo.cpp

    r50149 r50178  
    430430}
    431431
    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);
     432DECLEXPORT(int) crVBoxServerNotifyResize(const struct VBVAINFOSCREEN *pScreen, void *pvVRAM)
     433{
     434    int rc = crVBoxServerResizeScreen(pScreen, pvVRAM);
    445435    if (!RT_SUCCESS(rc))
    446436    {
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp

    r50161 r50178  
    248248        return VINF_SUCCESS;
    249249
    250     CrHTableEmpty(&pFb->SlotTable);
    251 
    252250    pFb->pDisplay = pDisplay;
    253251
     
    288286#define CR_PMGR_MODE_ALL    0x7
    289287
    290 static int crPMgrModeModifyGlobal(uint32_t u32Mode, bool fEnable);
     288static int crPMgrModeModifyGlobal(uint32_t u32ModeAdd, uint32_t u32ModeRemove);
    291289
    292290static CR_FBTEX* crFbTexAlloc()
     
    412410    if (!pTobj)
    413411    {
    414         WARN(("pTobj is null!"));
     412        LOG(("pTobj is null!"));
    415413        crStateGlobalSharedRelease();
    416414        return NULL;
     
    573571    if (!pFbTex)
    574572    {
    575         WARN(("crFbTexAcquire failed"));
     573        LOG(("crFbTexAcquire failed"));
    576574        return VERR_INVALID_PARAMETER;
    577575    }
     
    10081006        {
    10091007            mFlags.fRegionsShanged = 0;
    1010             ueRegions();
     1008            if (getFramebuffer()) /*<-dont't do anything on cleanup*/
     1009                ueRegions();
    10111010        }
    10121011    }
     
    22432242    {
    22442243        CrVrScrCompositorClear(&mCompositor);
     2244
    22452245        int rc = CrVrScrCompositorRectSet(&mCompositor, CrVrScrCompositorRectGet(CrFbGetCompositor(getFramebuffer())), NULL);
    22462246        if (!RT_SUCCESS(rc))
     
    28332833                {
    28342834#endif
    2835                     rc = crPMgrModeModifyGlobal(CR_PMGR_MODE_WINDOW, true);
     2835                    rc = crPMgrModeModifyGlobal(CR_PMGR_MODE_WINDOW, 0);
    28362836                    if (RT_SUCCESS(rc))
    28372837                        return VINF_SUCCESS;
     
    28652865void CrPMgrTerm()
    28662866{
    2867     crPMgrModeModifyGlobal(CR_PMGR_MODE_ALL, false);
     2867    crPMgrModeModifyGlobal(0, CR_PMGR_MODE_ALL);
    28682868
    28692869    HCR_FRAMEBUFFER hFb;
     
    31853185}
    31863186
    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 
     3187static int crPMgrModeModifyGlobal(uint32_t u32ModeAdd, uint32_t u32ModeRemove)
     3188{
    32013189    g_CrPresenter.u32DisplayMode = (g_CrPresenter.u32DisplayMode | u32ModeAdd) & ~u32ModeRemove;
    32023190
     
    32133201int CrPMgrModeVrdp(bool fEnable)
    32143202{
    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);
    32163215}
    32173216
    32183217int CrPMgrModeRootVr(bool fEnable)
    32193218{
    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);
    32213232}
    32223233
     
    36773688        if (!RT_SUCCESS(rc))
    36783689        {
    3679             WARN(("CrFbEntryCreateForTexId Failed"));
     3690            LOG(("CrFbEntryCreateForTexId Failed"));
    36803691            return;
    36813692        }
Note: See TracChangeset for help on using the changeset viewer.

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