OSDN Git Service

Fix for 2581725. Keep the last frame after resume(), and delete it
authorGloria Wang <gwang@google.com>
Tue, 13 Apr 2010 00:13:06 +0000 (17:13 -0700)
committerGloria Wang <gwang@google.com>
Tue, 13 Apr 2010 16:46:40 +0000 (09:46 -0700)
in the next suspend() or reuse it if no new frame is available.

Change-Id: I84286030eaae9061077d6ccb485b7dd53ef05341

media/libstagefright/AwesomePlayer.cpp

index 2bc8139..b14a03c 100644 (file)
@@ -1239,7 +1239,19 @@ status_t AwesomePlayer::suspend() {
     Mutex::Autolock autoLock(mLock);
 
     if (mSuspensionState != NULL) {
-        return INVALID_OPERATION;
+        if (mLastVideoBuffer == NULL) {
+            //go into here if video is suspended again
+            //after resuming without being played between
+            //them
+            SuspensionState *state = mSuspensionState;
+            mSuspensionState = NULL;
+            reset_l();
+            mSuspensionState = state;
+            return OK;
+        }
+
+        delete mSuspensionState;
+        mSuspensionState = NULL;
     }
 
     if (mFlags & PREPARING) {
@@ -1344,7 +1356,7 @@ status_t AwesomePlayer::resume() {
         play_l();
     }
 
-    delete state;
+    mSuspensionState = state;
     state = NULL;
 
     return OK;