From b19da8e187db1cf223463809148b7cb2d9e9751a Mon Sep 17 00:00:00 2001 From: Gloria Wang Date: Mon, 12 Apr 2010 17:13:06 -0700 Subject: [PATCH] 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 --- media/libstagefright/AwesomePlayer.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 2bc81399c389b..b14a03ce9e086 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;