Revert "intel: Remove unneded pthread mutex in LOCK_HARDWARE."

This reverts commit de447afff2 but
puts the lock under DRI1-only.

From keithw:
> It's there because the DRI1 code doesn't actually achieve the mutexing
> which it looks as if it should.  For multi-threaded applications it was
> always possible to get two threads inside locked regions -- I have no
> idea how, but it certainly was and presumably still is possible.
This commit is contained in:
Eric Anholt
2009-06-29 11:37:21 -07:00
parent 94008088c1
commit a96f86831e

View File

@@ -1038,6 +1038,8 @@ intelContendedLock(struct intel_context *intel, GLuint flags)
} }
_glthread_DECLARE_STATIC_MUTEX(lockMutex);
/* Lock the hardware and validate our state. /* Lock the hardware and validate our state.
*/ */
void LOCK_HARDWARE( struct intel_context *intel ) void LOCK_HARDWARE( struct intel_context *intel )
@@ -1052,6 +1054,9 @@ void LOCK_HARDWARE( struct intel_context *intel )
if (intel->locked >= 2) if (intel->locked >= 2)
return; return;
if (!sPriv->dri2.enabled)
_glthread_LOCK_MUTEX(lockMutex);
if (intel->driDrawable) { if (intel->driDrawable) {
intel_fb = intel->driDrawable->driverPrivate; intel_fb = intel->driDrawable->driverPrivate;
@@ -1103,8 +1108,10 @@ void UNLOCK_HARDWARE( struct intel_context *intel )
assert(intel->locked == 0); assert(intel->locked == 0);
if (!sPriv->dri2.enabled) if (!sPriv->dri2.enabled) {
DRM_UNLOCK(intel->driFd, intel->driHwLock, intel->hHWContext); DRM_UNLOCK(intel->driFd, intel->driHwLock, intel->hHWContext);
_glthread_UNLOCK_MUTEX(lockMutex);
}
if (INTEL_DEBUG & DEBUG_LOCK) if (INTEL_DEBUG & DEBUG_LOCK)
_mesa_printf("%s - unlocked\n", __progname); _mesa_printf("%s - unlocked\n", __progname);