OSDN Git Service

Bug 5031179 possible fix for assert in join
authorGlenn Kasten <gkasten@google.com>
Thu, 14 Jul 2011 23:16:54 +0000 (16:16 -0700)
committerGlenn Kasten <gkasten@google.com>
Thu, 14 Jul 2011 23:16:54 +0000 (16:16 -0700)
Change-Id: Id3a24c152579b8fdcfb9d66a11aa11579406a7ec

media/libstagefright/omx/OMX.cpp

index 25f30d6..bc24dbb 100644 (file)
@@ -96,9 +96,14 @@ OMX::CallbackDispatcher::~CallbackDispatcher() {
         mQueueChanged.signal();
     }
 
-    // Don't call join on myself
+    // A join on self can happen if the last ref to CallbackDispatcher
+    // is released within the CallbackDispatcherThread loop
     status_t status = mThread->join();
-    CHECK(status == NO_ERROR);
+    if (status != WOULD_BLOCK) {
+        // Other than join to self, the only other error return codes are
+        // whatever readyToRun() returns, and we don't override that
+        CHECK_EQ(status, NO_ERROR);
+    }
 }
 
 void OMX::CallbackDispatcher::post(const omx_message &msg) {