summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/AwesomePlayer.cpp
diff options
context:
space:
mode:
authorGloria Wang <gwang@google.com>2010-04-12 17:13:06 -0700
committerGloria Wang <gwang@google.com>2010-04-13 09:46:40 -0700
commit5c117390591da780e1f53c1c9c91c1efdacbc674 (patch)
treea5941c728bcc8479b6c22b802786cf78367da7d4 /media/libstagefright/AwesomePlayer.cpp
parent81f82c32459029bf0744e28c73f95a7f18cab5ac (diff)
downloadframeworks_av-5c117390591da780e1f53c1c9c91c1efdacbc674.zip
frameworks_av-5c117390591da780e1f53c1c9c91c1efdacbc674.tar.gz
frameworks_av-5c117390591da780e1f53c1c9c91c1efdacbc674.tar.bz2
Fix for 2581725. Keep the last frame after resume(), and delete it
in the next suspend() or reuse it if no new frame is available. Change-Id: I84286030eaae9061077d6ccb485b7dd53ef05341
Diffstat (limited to 'media/libstagefright/AwesomePlayer.cpp')
-rw-r--r--media/libstagefright/AwesomePlayer.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index 2bc8139..b14a03c 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -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;