diff options
author | Andreas Huber <andih@google.com> | 2011-11-16 10:46:05 -0800 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2011-11-16 10:46:05 -0800 |
commit | 22cf4b0c5f76c9bcf9103af21b29c9b532ea52c2 (patch) | |
tree | 16f49a7e3488e3b55b86e84f826116bcde729669 /media | |
parent | c7403258528a08ab74f7c29277d0c34ba6edc53d (diff) | |
download | frameworks_base-22cf4b0c5f76c9bcf9103af21b29c9b532ea52c2.zip frameworks_base-22cf4b0c5f76c9bcf9103af21b29c9b532ea52c2.tar.gz frameworks_base-22cf4b0c5f76c9bcf9103af21b29c9b532ea52c2.tar.bz2 |
Make sure not to cancel pending seek/EOS notifications on a cache underrun...
or they are lost for good.
Change-Id: I2f9f53efb05db4077961137c9dc8c27edac4ec62
related-to-bug: 5544907
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/AwesomePlayer.cpp | 15 | ||||
-rw-r--r-- | media/libstagefright/include/AwesomePlayer.h | 2 |
2 files changed, 9 insertions, 8 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 7d9d7ed..f6d054d 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -224,17 +224,18 @@ AwesomePlayer::~AwesomePlayer() { mClient.disconnect(); } -void AwesomePlayer::cancelPlayerEvents(bool keepBufferingGoing) { +void AwesomePlayer::cancelPlayerEvents(bool keepNotifications) { mQueue.cancelEvent(mVideoEvent->eventID()); mVideoEventPending = false; - mQueue.cancelEvent(mStreamDoneEvent->eventID()); - mStreamDoneEventPending = false; - mQueue.cancelEvent(mCheckAudioStatusEvent->eventID()); - mAudioStatusEventPending = false; mQueue.cancelEvent(mVideoLagEvent->eventID()); mVideoLagEventPending = false; - if (!keepBufferingGoing) { + if (!keepNotifications) { + mQueue.cancelEvent(mStreamDoneEvent->eventID()); + mStreamDoneEventPending = false; + mQueue.cancelEvent(mCheckAudioStatusEvent->eventID()); + mAudioStatusEventPending = false; + mQueue.cancelEvent(mBufferingEvent->eventID()); mBufferingEventPending = false; } @@ -1095,7 +1096,7 @@ status_t AwesomePlayer::pause_l(bool at_eos) { return OK; } - cancelPlayerEvents(true /* keepBufferingGoing */); + cancelPlayerEvents(true /* keepNotifications */); if (mAudioPlayer != NULL && (mFlags & AUDIO_RUNNING)) { if (at_eos) { diff --git a/media/libstagefright/include/AwesomePlayer.h b/media/libstagefright/include/AwesomePlayer.h index c13d6cb..0985f47 100644 --- a/media/libstagefright/include/AwesomePlayer.h +++ b/media/libstagefright/include/AwesomePlayer.h @@ -250,7 +250,7 @@ private: void notifyVideoSize_l(); void seekAudioIfNecessary_l(); - void cancelPlayerEvents(bool keepBufferingGoing = false); + void cancelPlayerEvents(bool keepNotifications = false); void setAudioSource(sp<MediaSource> source); status_t initAudioDecoder(); |