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;
                 }

             }