From af64a8a6ad89f52685e822dca30742a4132c9ae6 Mon Sep 17 00:00:00 2001 From: Gloria Wang Date: Thu, 18 Aug 2011 14:52:36 -0700 Subject: When switching surface, do not set mSeekNotificationSent as true, because there could be a previous uncompleted seeking which needs to send back MEDIA_SEEK_COMPLETE message. If we set mSeekNotificationSent as true here, then mediaplayer.cpp will be waiting for message MEDIA_SEEK_COMPLETE. The getCurrentPosition() will always return the seek time before MEDIA_SEEK_COMPLETE being received by mediaplayer.cpp. Fix for bug 5181272. Change-Id: I290aff29b6d9ec8db67c66abbe1f352a43f57073 --- media/libstagefright/AwesomePlayer.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 99242ab..96eecce 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -548,7 +548,7 @@ void AwesomePlayer::reset_l() { mVideoTimeUs = 0; mSeeking = NO_SEEK; - mSeekNotificationSent = false; + mSeekNotificationSent = true; mSeekTimeUs = 0; mUri.setTo(""); @@ -1204,7 +1204,6 @@ void AwesomePlayer::setNativeWindow_l(const sp &native) { if (mLastVideoTimeUs >= 0) { mSeeking = SEEK; - mSeekNotificationSent = true; mSeekTimeUs = mLastVideoTimeUs; modifyFlags((AT_EOS | AUDIO_AT_EOS | VIDEO_AT_EOS), CLEAR); } @@ -1305,8 +1304,10 @@ void AwesomePlayer::OnRTSPSeekDoneWrapper(void *cookie) { } void AwesomePlayer::onRTSPSeekDone() { - notifyListener_l(MEDIA_SEEK_COMPLETE); - mSeekNotificationSent = true; + if (!mSeekNotificationSent) { + notifyListener_l(MEDIA_SEEK_COMPLETE); + mSeekNotificationSent = true; + } } status_t AwesomePlayer::seekTo_l(int64_t timeUs) { -- cgit v1.1