Clear the local prefetcher strong reference before signalling that prepare() was cancelled early in order to avoid a race condition that occasionally triggered an assertion from the main thread.
Change-Id: I0db198fe5fd0fbe9a6c90a8e5924a2df05432c4c
related-to-bug: 2538486
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index 164df72..407fd57 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -1153,6 +1153,8 @@
Mutex::Autolock autoLock(mLock);
if (mFlags & PREPARE_CANCELLED) {
LOGI("prepare was cancelled before preparing the prefetcher");
+
+ prefetcher.clear();
abortPrepare(UNKNOWN_ERROR);
return;
}