VirtualBox

Changeset 38314 in vbox for trunk


Ignore:
Timestamp:
Aug 4, 2011 2:05:58 PM (13 years ago)
Author:
vboxsync
Message:

crogl: fix hgcm con raisings, that cause WinSAT, immage viewer, etc. crashes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/OpenGL/util/vboxhgcm.c

    r37714 r38314  
    820820    void *pvBuff;
    821821    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
     822#ifdef CHROMIUM_THREADSAFE
     823    crLockMutex(&g_crvboxhgcm.mutex);
     824#endif
    822825    pvBuff = _crVBoxHGCMAlloc(conn);
     826#ifdef CHROMIUM_THREADSAFE
     827    crUnlockMutex(&g_crvboxhgcm.mutex);
     828#endif
    823829    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    824830    return pvBuff;
     
    877883{
    878884    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
     885#ifdef CHROMIUM_THREADSAFE
     886    crLockMutex(&g_crvboxhgcm.mutex);
     887#endif
    879888    _crVBoxHGCMWriteExact(conn, buf, len);
     889#ifdef CHROMIUM_THREADSAFE
     890    crUnlockMutex(&g_crvboxhgcm.mutex);
     891#endif
    880892    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    881893}
     
    10681080    CRVBOXHGCMBUFFER *hgcm_buffer;
    10691081    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
     1082
     1083#ifdef CHROMIUM_THREADSAFE
     1084    crLockMutex(&g_crvboxhgcm.mutex);
     1085#endif
    10701086
    10711087    if (!bufp) /* We're sending a user-allocated buffer. */
     
    10801096            crVBoxHGCMWriteReadExact(conn, start, len, CR_VBOXHGCM_USERALLOCATED);
    10811097#endif
     1098#ifdef CHROMIUM_THREADSAFE
     1099            crUnlockMutex(&g_crvboxhgcm.mutex);
     1100#endif
    10821101            VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    10831102        return;
     
    11191138    *bufp = NULL;
    11201139
     1140#ifdef CHROMIUM_THREADSAFE
     1141    crUnlockMutex(&g_crvboxhgcm.mutex);
     1142#endif
     1143
    11211144    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    11221145}
     
    11591182{
    11601183    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
     1184#ifdef CHROMIUM_THREADSAFE
     1185    crLockMutex(&g_crvboxhgcm.mutex);
     1186#endif
    11611187    crVBoxHGCMReadExact(conn, buf, len);
     1188#ifdef CHROMIUM_THREADSAFE
     1189    crUnlockMutex(&g_crvboxhgcm.mutex);
     1190#endif
    11621191    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    11631192}
     
    12051234{
    12061235    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
     1236#ifdef CHROMIUM_THREADSAFE
     1237    crLockMutex(&g_crvboxhgcm.mutex);
     1238#endif
    12071239    _crVBoxHGCMFree(conn, buf);
     1240#ifdef CHROMIUM_THREADSAFE
     1241    crUnlockMutex(&g_crvboxhgcm.mutex);
     1242#endif
    12081243    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    12091244}
     
    12901325{
    12911326    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
     1327#ifdef CHROMIUM_THREADSAFE
     1328    crLockMutex(&g_crvboxhgcm.mutex);
     1329#endif
    12921330    _crVBoxHGCMReceiveMessage(conn);
     1331#ifdef CHROMIUM_THREADSAFE
     1332    crUnlockMutex(&g_crvboxhgcm.mutex);
     1333#endif
    12931334    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    12941335}
     
    15921633{
    15931634    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
     1635#ifdef CHROMIUM_THREADSAFE
     1636    crLockMutex(&g_crvboxhgcm.mutex);
     1637#endif
    15941638    _crVBoxHGCMFree(conn, mess);
    15951639    CRASSERT(FALSE);
     1640#ifdef CHROMIUM_THREADSAFE
     1641    crUnlockMutex(&g_crvboxhgcm.mutex);
     1642#endif
    15961643    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    15971644}
     
    17011748    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
    17021749
     1750#ifdef CHROMIUM_THREADSAFE
     1751    crLockMutex(&g_crvboxhgcm.mutex);
     1752#endif
     1753
    17031754    pClient = _crVBoxHGSMIClientGet(conn);
    17041755    if (pClient)
     
    17121763    }
    17131764
     1765#ifdef CHROMIUM_THREADSAFE
     1766    crUnlockMutex(&g_crvboxhgcm.mutex);
     1767#endif
     1768
    17141769    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    17151770
     
    17201775{
    17211776    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
     1777#ifdef CHROMIUM_THREADSAFE
     1778    crLockMutex(&g_crvboxhgcm.mutex);
     1779#endif
    17221780    _crVBoxHGSMIFree(conn, buf);
     1781#ifdef CHROMIUM_THREADSAFE
     1782    crUnlockMutex(&g_crvboxhgcm.mutex);
     1783#endif
    17231784    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    17241785}
     
    20772138    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
    20782139
     2140#ifdef CHROMIUM_THREADSAFE
     2141    crLockMutex(&g_crvboxhgcm.mutex);
     2142#endif
     2143
    20792144    if (!bufp) /* We're sending a user-allocated buffer. */
    20802145    {
     
    20912156            _crVBoxHGSMIWriteReadExact(conn, pClient, (void*)start, 0, len, false);
    20922157#endif
     2158#ifdef CHROMIUM_THREADSAFE
     2159            crUnlockMutex(&g_crvboxhgcm.mutex);
     2160#endif
    20932161            VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    20942162            return;
     
    20972165        /* fallback */
    20982166        crVBoxHGCMSend(conn, bufp, start, len);
     2167#ifdef CHROMIUM_THREADSAFE
     2168        crUnlockMutex(&g_crvboxhgcm.mutex);
     2169#endif
    20992170        VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    21002171        return;
     
    21132184        /* fallback */
    21142185        crVBoxHGCMSend(conn, bufp, start, len);
     2186#ifdef CHROMIUM_THREADSAFE
     2187        crUnlockMutex(&g_crvboxhgcm.mutex);
     2188#endif
    21152189        VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    21162190        return;
     
    21272201    {
    21282202        crVBoxHGCMSend(conn, bufp, start, len);
     2203#ifdef CHROMIUM_THREADSAFE
     2204        crUnlockMutex(&g_crvboxhgcm.mutex);
     2205#endif
    21292206        VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    21302207        return;
     
    21592236    *bufp = NULL;
    21602237
     2238#ifdef CHROMIUM_THREADSAFE
     2239    crUnlockMutex(&g_crvboxhgcm.mutex);
     2240#endif
     2241
    21612242    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    21622243}
     
    21672248
    21682249    CRASSERT(0);
    2169 //    PCRVBOXHGSMI_CLIENT pClient;
    2170 //    PVBOXUHGSMI_BUFFER pBuf = _crVBoxHGSMIBufFromMemPtr(buf);
    2171 //    if (!pBuf)
    2172 //        return;
    2173 //    pClient = (PCRVBOXHGSMI_CLIENT)pBuf->pvUserData;
    2174 //    _crVBoxHGSMIWriteExact(conn, pClient, pBuf, 0, len);
    2175 //    _crVBoxHGSMIBufFree(pClient, pBuf);
     2250
    21762251    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    21772252}
     
    21792254static void crVBoxHGSMISingleRecv(CRConnection *conn, void *buf, unsigned int len)
    21802255{
    2181 //    PCRVBOXHGSMI_CLIENT pClient;
    2182 //    PVBOXUHGSMI_BUFFER pBuf;
    21832256    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
    2184 //    pBuf = _crVBoxHGSMIBufFromMemPtr(buf);
    2185 //    Assert(pBuf);
     2257
    21862258    CRASSERT(0);
    2187 //    if (!pBuf)
    2188 //    {
    2189 //        VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    2190 //        return;
    2191 //    }
    2192 //    pClient = (PCRVBOXHGSMI_CLIENT)pBuf->pvUserData;
    2193 //    _crVBoxHGSMIReadExact(conn, pClient);
     2259
    21942260    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    21952261}
     
    21992265    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
    22002266
     2267#ifdef CHROMIUM_THREADSAFE
     2268    crLockMutex(&g_crvboxhgcm.mutex);
     2269#endif
     2270
    22012271    CRASSERT(0);
    22022272
    22032273    _crVBoxHGCMReceiveMessage(conn);
     2274
     2275#ifdef CHROMIUM_THREADSAFE
     2276    crUnlockMutex(&g_crvboxhgcm.mutex);
     2277#endif
     2278
    22042279    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    22052280}
     
    22272302static void crVBoxHGSMIDoDisconnect( CRConnection *conn )
    22282303{
     2304#ifdef CHROMIUM_THREADSAFE
     2305    crLockMutex(&g_crvboxhgcm.mutex);
     2306#endif
    22292307#ifndef VBOX_CRHGSMI_WITH_D3DDEV
    22302308    if (conn->HgsmiClient.pHgsmi)
     
    22352313        VBoxCrHgsmiDestroy(pHgsmi);
    22362314    }
    2237 
    22382315#endif
    22392316    crVBoxHGCMDoDisconnect(conn);
     2317#ifdef CHROMIUM_THREADSAFE
     2318    crUnlockMutex(&g_crvboxhgcm.mutex);
     2319#endif
    22402320}
    22412321
     
    22432323{
    22442324    VBOXCRHGSMIPROFILE_FUNC_PROLOGUE();
     2325#ifdef CHROMIUM_THREADSAFE
     2326    crLockMutex(&g_crvboxhgcm.mutex);
     2327#endif
    22452328    CRASSERT(0);
    22462329
    22472330    _crVBoxHGSMIFree(conn, mess);
    2248     CRASSERT(FALSE);
    2249 
     2331
     2332#ifdef CHROMIUM_THREADSAFE
     2333    crUnlockMutex(&g_crvboxhgcm.mutex);
     2334#endif
    22502335    VBOXCRHGSMIPROFILE_FUNC_EPILOGUE();
    22512336}
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