diff options
author | Gloria Wang <gwang@google.com> | 2010-04-12 17:13:06 -0700 |
---|---|---|
committer | Gloria Wang <gwang@google.com> | 2010-04-13 09:46:40 -0700 |
commit | 5c117390591da780e1f53c1c9c91c1efdacbc674 (patch) | |
tree | a5941c728bcc8479b6c22b802786cf78367da7d4 /media/libstagefright/AwesomePlayer.cpp | |
parent | 81f82c32459029bf0744e28c73f95a7f18cab5ac (diff) | |
download | frameworks_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.cpp | 16 |
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; |