OSDN Git Service

attempt to work around [2155085, 2150246] stuck in closeTransaction()
authorMathias Agopian <mathias@google.com>
Wed, 30 Sep 2009 21:42:13 +0000 (14:42 -0700)
committerMathias Agopian <mathias@google.com>
Wed, 30 Sep 2009 22:15:07 +0000 (15:15 -0700)
libs/surfaceflinger/SurfaceFlinger.cpp

index e468b23..eb0983a 100644 (file)
@@ -1125,7 +1125,14 @@ void SurfaceFlinger::closeGlobalTransaction()
         // take effect before returning.
         Mutex::Autolock _l(mStateLock);
         while (mResizeTransationPending) {
-            mTransactionCV.wait(mStateLock);
+            status_t err = mTransactionCV.waitRelative(mStateLock, s2ns(5));
+            if (CC_UNLIKELY(err != NO_ERROR)) {
+                // just in case something goes wrong in SF, return to the
+                // called after a few seconds.
+                LOGW_IF(err == TIMED_OUT, "closeGlobalTransaction timed out!");
+                mResizeTransationPending = false;
+                break;
+            }
         }
     }
 }