VirtualBox

Changeset 34887 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Dec 9, 2010 2:13:56 PM (14 years ago)
Author:
vboxsync
Message:

crOpenGL/XPDM: fix explorer crashes on windows vista/win7 guests

Location:
trunk/src/VBox
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/crOpenGL/icd_drv.c

    r30512 r34887  
    8686    }
    8787
    88     crNetTearDown();
    8988    crDebug("DrvValidateVersion %x -> FALSE, going to use system default opengl32.dll\n", version);
    9089    return FALSE;
  • trunk/src/VBox/Additions/common/crOpenGL/load.c

    r34345 r34887  
    342342#endif
    343343
     344#ifndef WINDOWS
    344345    crNetTearDown();
     346#endif
    345347
    346348#ifdef GLX
     
    412414#endif
    413415
     416#ifndef WINDOWS
    414417    crNetTearDown();
     418#endif
     419
    415420#ifdef CHROMIUM_THREADSAFE
    416421    crUnlockMutex(mutex);
  • trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c

    r34336 r34887  
    537537        {
    538538            crFreeMutex(&_PackMutex);
     539            crNetTearDown();
    539540            break;
    540541        }
  • trunk/src/VBox/GuestHost/OpenGL/util/vboxhgcm.c

    r34884 r34887  
    14921492#endif
    14931493
     1494    if (!g_crvboxhgcm.initialized) return;
     1495
     1496#ifdef CHROMIUM_THREADSAFE
     1497    crLockMutex(&g_crvboxhgcm.mutex);
     1498#endif
     1499
    14941500    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
    14951501
     
    15051511    conn->cbBuffer = 0;
    15061512
    1507     //@todo hold lock here?
    15081513    if (conn->type == CR_VBOXHGCM)
    15091514    {
     
    15751580
    15761581    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
     1582
     1583#ifdef CHROMIUM_THREADSAFE
     1584    crUnlockMutex(&g_crvboxhgcm.mutex);
     1585#endif
    15771586}
    15781587
     
    23192328    if (!g_crvboxhgcm.initialized) return;
    23202329
     2330#ifdef CHROMIUM_THREADSAFE
     2331    crLockMutex(&g_crvboxhgcm.mutex);
     2332#endif
     2333
    23212334    /* Connection count would be changed in calls to crNetDisconnect, so we have to store original value.
    23222335     * Walking array backwards is not a good idea as it could cause some issues if we'd disconnect clients not in the
     
    23312344    CRASSERT(0==g_crvboxhgcm.num_conns);
    23322345
     2346    g_crvboxhgcm.initialized = 0;
     2347
    23332348#ifdef CHROMIUM_THREADSAFE
     2349    crUnlockMutex(&g_crvboxhgcm.mutex);
    23342350    crFreeMutex(&g_crvboxhgcm.mutex);
    23352351    crFreeMutex(&g_crvboxhgcm.recvmutex);
     
    23392355        crBufferPoolCallbackFree(g_crvboxhgcm.bufpool, crVBoxHGCMBufferFree);
    23402356    g_crvboxhgcm.bufpool = NULL;
    2341 
    2342     g_crvboxhgcm.initialized = 0;
    23432357
    23442358    crFree(g_crvboxhgcm.conns);
     
    24012415        conn->HandleNewMessage = crVBoxHGCMHandleNewMessage;
    24022416    }
    2403     conn->index = g_crvboxhgcm.num_conns;
    24042417    conn->sizeof_buffer_header = sizeof(CRVBOXHGCMBUFFER);
    24052418    conn->actual_network = 1;
     
    24172430    conn->cbHostBuffer = 0;
    24182431
     2432#ifdef CHROMIUM_THREADSAFE
     2433    crLockMutex(&g_crvboxhgcm.mutex);
     2434#endif
    24192435    /* Find a free slot */
    24202436    for (i = 0; i < g_crvboxhgcm.num_conns; i++) {
     
    24312447        n_bytes = ( g_crvboxhgcm.num_conns + 1 ) * sizeof(*g_crvboxhgcm.conns);
    24322448        crRealloc( (void **) &g_crvboxhgcm.conns, n_bytes );
     2449        conn->index = g_crvboxhgcm.num_conns;
    24332450        g_crvboxhgcm.conns[g_crvboxhgcm.num_conns++] = conn;
    24342451    }
     2452#ifdef CHROMIUM_THREADSAFE
     2453    crUnlockMutex(&g_crvboxhgcm.mutex);
     2454#endif
    24352455}
    24362456
     
    24402460
    24412461    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
     2462
     2463#ifdef CHROMIUM_THREADSAFE
     2464    crLockMutex(&g_crvboxhgcm.mutex);
     2465#endif
    24422466
    24432467#ifdef IN_GUEST
     
    24802504    }
    24812505
     2506#ifdef CHROMIUM_THREADSAFE
     2507    crUnlockMutex(&g_crvboxhgcm.mutex);
     2508#endif
     2509
    24822510    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    24832511
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