summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2011-11-16 10:46:05 -0800
committerAndreas Huber <andih@google.com>2011-11-16 10:46:05 -0800
commitc34233e673c9791e137456d0c427d58db184b690 (patch)
treecaa611bce19db70a90586d6caa93bcf4ca6ec6ff /media
parent9621addc73c029e77fd3d50f38a34f8f264b6e38 (diff)
downloadframeworks_av-c34233e673c9791e137456d0c427d58db184b690.zip
frameworks_av-c34233e673c9791e137456d0c427d58db184b690.tar.gz
frameworks_av-c34233e673c9791e137456d0c427d58db184b690.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.cpp15
-rw-r--r--media/libstagefright/include/AwesomePlayer.h2
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();