OSDN Git Service

Fix for deadlock
authorNicolas Roard <nicolas@android.com>
Wed, 3 Nov 2010 00:07:14 +0000 (17:07 -0700)
committerNicolas Roard <nicolas@android.com>
Wed, 3 Nov 2010 00:20:13 +0000 (17:20 -0700)
Bug:3155066

Change-Id: I3e249050c779d10db75f97b177e09144a52f70b1

WebCore/platform/graphics/android/BackedDoubleBufferedTexture.cpp

index 334f7fd..7cecddd 100644 (file)
@@ -128,15 +128,14 @@ bool BackedDoubleBufferedTexture::acquire(BaseTile* owner)
 
     // if the writable texture is busy (i.e. currently being written to) then we
     // can't change the owner out from underneath that texture
-    m_varLock.lock();
-    if (m_busy)
-        return false;
-    m_varLock.unlock();
-
-    if (m_owner)
-        m_owner->removeTexture();
-    m_owner = owner;
-    return true;
+    android::Mutex::Autolock lock(m_varLock);
+    if (!m_busy) {
+        if (m_owner)
+            m_owner->removeTexture();
+        m_owner = owner;
+        return true;
+    }
+    return false;
 }
 
 } // namespace WebCore