VirtualBox

Changeset 3435 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jul 5, 2007 8:34:29 AM (18 years ago)
Author:
vboxsync
Message:

Error propagation

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/gldrv.h

    r3338 r3435  
    3838{
    3939    uint64_t    lastretval;
     40    uint32_t    ulLastError;
     41
     42    bool        fHasLastError;
    4043
    4144    uint8_t    *pLastParam;
  • trunk/src/VBox/HostServices/SharedOpenGL/glwindrv.cpp

    r3434 r3435  
    144144void vboxglDrvCreateContext(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
    145145{
    146     HGLRC glrc;
     146    HGLRC glrc = 0;
    147147
    148148    OGL_CMD(DrvCreateContext, 6);
     
    178178    uint32_t lasterr = glGetError();
    179179    format = ChoosePixelFormat(pClient->hdc, &pfd);
    180     lasterr = glGetError();
    181180    SetPixelFormat(pClient->hdc, format, &pfd);
    182181
    183     lasterr = glGetError();
    184182    glrc = wglCreateContext(pClient->hdc);
    185     lasterr = glGetError();
    186183    Assert(glrc);
    187184#else
     
    190187#endif
    191188
    192     pClient->lastretval = (uint64_t)glrc;
     189    pClient->lastretval    = (uint64_t)glrc;
     190    pClient->fHasLastError = true;
     191    pClient->ulLastError   = GetLastError();
    193192}
    194193
    195194void vboxglDrvSetContext(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
    196195{
    197     BOOL ret;
    198 
    199196    OGL_CMD(DrvSetContext, 2);
    200197    OGL_PARAM(HDC, hdc);
     
    203200    Log(("DrvSetyContext %x %x\n", hdc, hglrc));
    204201#ifdef VBOX_OGL_DEBUG_WINDOW_OUTPUT
    205     ret = wglMakeCurrent(pClient->hdc, hglrc);
    206     if (!ret)
     202    pClient->lastretval = wglMakeCurrent(pClient->hdc, hglrc);
     203    if (!pClient->lastretval)
    207204        Log(("wglMakeCurrent failed with %d\n", GetLastError()));
    208205#else
    209206    AssertFailed();
    210207#endif
     208    pClient->fHasLastError = true;
     209    pClient->ulLastError   = GetLastError();
    211210}
    212211
     
    221220    if (!pClient->lastretval)
    222221        Log(("wglCopyContext failed with %d\n", GetLastError()));
     222
     223    pClient->fHasLastError = true;
     224    pClient->ulLastError   = GetLastError();
    223225}
    224226
    225227void vboxglDrvReleaseContext(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
    226228{
    227     BOOL ret;
    228 
    229229    OGL_CMD(DrvReleaseContext, 1);
    230230    OGL_PARAM(HGLRC, hglrc);
     
    232232    Log(("DrvReleaseContext %x\n", hglrc));
    233233    /* clear current selection */
    234     ret = wglMakeCurrent(pClient->hdc, NULL);
    235     if (!ret)
     234    pClient->lastretval = wglMakeCurrent(pClient->hdc, NULL);
     235    if (!pClient->lastretval)
    236236        Log(("wglMakeCurrent failed with %d\n", GetLastError()));
     237    pClient->fHasLastError = true;
     238    pClient->ulLastError   = GetLastError();
    237239}
    238240
    239241void vboxglDrvDeleteContext(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
    240242{
    241     BOOL ret;
    242 
    243243    OGL_CMD(DrvDeleteContext, 1);
    244244    OGL_PARAM(HGLRC, hglrc);
    245245
    246246    Log(("DrvDeleteContext %x\n", hglrc));
    247     ret = wglDeleteContext(hglrc);
    248     if (!ret)
     247    pClient->lastretval = wglDeleteContext(hglrc);
     248    if (!pClient->lastretval)
    249249        Log(("wglDeleteContext failed with %d\n", GetLastError()));
     250    pClient->fHasLastError = true;
     251    pClient->ulLastError   = GetLastError();
    250252}
    251253
    252254void vboxglDrvCreateLayerContext(VBOXOGLCTX *pClient, uint8_t *pCmdBuffer)
    253255{
    254     HGLRC glrc;
     256    HGLRC glrc = 0;
    255257
    256258    OGL_CMD(DrvCreateLayerContext, 7);
     
    295297    AssertFailed();
    296298#endif
     299
     300    pClient->lastretval    = (uint64_t)glrc;
     301    pClient->fHasLastError = true;
     302    pClient->ulLastError   = GetLastError();
    297303}
    298304
     
    305311    Log(("DrvShareLists %x %x\n", hglrc1, hglrc2));
    306312    pClient->lastretval = wglShareLists(hglrc1, hglrc2);
     313    pClient->fHasLastError = true;
     314    pClient->ulLastError   = GetLastError();
    307315}
    308316
     
    316324    Log(("DrvRealizeLayerPalette %x %d %d\n", hdc, iLayerPlane, bRealize));
    317325    pClient->lastretval = wglRealizeLayerPalette(VBOX_OGL_GUEST_TO_HOST_HDC(hdc), iLayerPlane, bRealize);
     326    pClient->fHasLastError = true;
     327    pClient->ulLastError   = GetLastError();
    318328}
    319329
     
    325335    Log(("DrvSwapLayerBuffers %x %d\n", hdc, fuPlanes));
    326336    pClient->lastretval = wglSwapLayerBuffers(VBOX_OGL_GUEST_TO_HOST_HDC(hdc), fuPlanes);
     337    pClient->fHasLastError = true;
     338    pClient->ulLastError   = GetLastError();
    327339}
    328340
     
    347359        pClient->lastretval = 0;
    348360    }
     361    pClient->fHasLastError = true;
     362    pClient->ulLastError   = GetLastError();
    349363}
    350364
     
    360374
    361375    /** @todo sync bitmap/screen contents */
     376    pClient->fHasLastError = true;
     377    pClient->ulLastError   = GetLastError();
    362378}
    363379
     
    378394    if (!pClient->lastretval)
    379395        Log(("wglDescribeLayerPlane failed with %d\n", GetLastError()));
     396    pClient->fHasLastError = true;
     397    pClient->ulLastError   = GetLastError();
    380398}
    381399
     
    393411    if (!pClient->lastretval)
    394412        Log(("wglSetLayerPaletteEntries failed with %d\n", GetLastError()));
     413    pClient->fHasLastError = true;
     414    pClient->ulLastError   = GetLastError();
    395415}
    396416
     
    412432    if (!pClient->lastretval)
    413433        Log(("wglGetLayerPaletteEntries failed with %d\n", GetLastError()));
     434    pClient->fHasLastError = true;
     435    pClient->ulLastError   = GetLastError();
    414436}
    415437
     
    434456        Log(("DescribePixelFormat failed with %d\n", GetLastError()));
    435457
     458    pClient->fHasLastError = true;
     459    pClient->ulLastError   = GetLastError();
     460
    436461    if (!VBOX_OGL_GUEST_TO_HOST_HDC(hdc))
    437462        ReleaseDC(0, pClient->hdc);
  • trunk/src/VBox/HostServices/SharedOpenGL/vboxgl.cpp

    r3428 r3435  
    114114    Log(("vboxglFlushBuffer cCommands=%d cbCmdBuffer=%x\n", cCommands, cbCmdBuffer));
    115115
     116    pClient->fHasLastError = false;
     117
    116118    for (i=0;i<cCommands;i++)
    117119    {
     
    135137
    136138    *pLastRetVal = pClient->lastretval;
    137     *pLastError  = 0; //glGetError();
     139    if (pClient->fHasLastError)
     140        *pLastError = pClient->ulLastError;
     141    else
     142        *pLastError = glGetError();
    138143
    139144#ifdef DEBUG
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