Fix for the issue: TestPreviewWithTransition fails (4133108)
Change-Id: I53eb798f4f86e83f8a4668c7256241367c1ccbe4
diff --git a/libvideoeditor/lvpp/VideoEditorPreviewController.cpp b/libvideoeditor/lvpp/VideoEditorPreviewController.cpp
index 3e3d161..2e2ae22 100755
--- a/libvideoeditor/lvpp/VideoEditorPreviewController.cpp
+++ b/libvideoeditor/lvpp/VideoEditorPreviewController.cpp
@@ -681,10 +681,15 @@
// Return the last rendered frame time stamp
mVePlayer[mActivePlayerIndex]->getLastRenderedTimeMs(&lastRenderedFrameTimeMs);
}
-
- LOGV("stopPreview: clearing mVePlayer");
- mVePlayer[playerInst].clear();
+
+ //This is used to syncronize onStreamDone() in PreviewPlayer and
+ //stopPreview() in PreviewController
+ sp<VideoEditorPlayer> temp = mVePlayer[playerInst];
+ temp->acquireLock();
+ LOGV("stopPreview: clearing mVePlayer");
+ mVePlayer[playerInst].clear();
mVePlayer[playerInst] = NULL;
+ temp->releaseLock();
}
}
LOGV("stopPreview: clear audioSink and audioPlayer");
@@ -1124,7 +1129,7 @@
}
}
LOGV("threadProc: sem wait returned err = 0x%x", err);
- }
+ }
//Always return M4NO_ERROR to ensure the thread keeps running
return M4NO_ERROR;
@@ -1186,7 +1191,8 @@
{
Mutex::Autolock autoLock(pController->mLockSem);
if (pController->mSemThreadWait != NULL) {
- M4OSA_semaphorePost(pController->mSemThreadWait);
+ M4OSA_semaphorePost(pController->mSemThreadWait);
+ return;
}
}