Properly send a MEDIA_SEEK_COMPLETE notification for a seek request while paused (legacy behaviour).
Change-Id: I64da5eb97c75b269b4668b3628ed0f05f2e36e51 related-to-bug: 2557482
This commit is contained in:
@@ -395,6 +395,7 @@ void AwesomePlayer::reset_l() {
|
||||
mVideoTimeUs = 0;
|
||||
|
||||
mSeeking = false;
|
||||
mSeekNotificationSent = false;
|
||||
mSeekTimeUs = 0;
|
||||
|
||||
mUri.setTo("");
|
||||
@@ -686,11 +687,20 @@ status_t AwesomePlayer::seekTo(int64_t timeUs) {
|
||||
|
||||
status_t AwesomePlayer::seekTo_l(int64_t timeUs) {
|
||||
mSeeking = true;
|
||||
mSeekNotificationSent = false;
|
||||
mSeekTimeUs = timeUs;
|
||||
mFlags &= ~AT_EOS;
|
||||
|
||||
seekAudioIfNecessary_l();
|
||||
|
||||
if (!(mFlags & PLAYING)) {
|
||||
LOGV("seeking while paused, sending SEEK_COMPLETE notification"
|
||||
" immediately.");
|
||||
|
||||
notifyListener_l(MEDIA_SEEK_COMPLETE);
|
||||
mSeekNotificationSent = true;
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
@@ -701,6 +711,7 @@ void AwesomePlayer::seekAudioIfNecessary_l() {
|
||||
mWatchForAudioSeekComplete = true;
|
||||
mWatchForAudioEOS = true;
|
||||
mSeeking = false;
|
||||
mSeekNotificationSent = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -869,7 +880,7 @@ void AwesomePlayer::onVideoEvent() {
|
||||
mAudioPlayer->seekTo(timeUs);
|
||||
mWatchForAudioSeekComplete = true;
|
||||
mWatchForAudioEOS = true;
|
||||
} else {
|
||||
} else if (!mSeekNotificationSent) {
|
||||
// If we're playing video only, report seek complete now,
|
||||
// otherwise audio player will notify us later.
|
||||
notifyListener_l(MEDIA_SEEK_COMPLETE);
|
||||
@@ -877,6 +888,7 @@ void AwesomePlayer::onVideoEvent() {
|
||||
|
||||
mFlags |= FIRST_FRAME;
|
||||
mSeeking = false;
|
||||
mSeekNotificationSent = false;
|
||||
}
|
||||
|
||||
if (mFlags & FIRST_FRAME) {
|
||||
@@ -984,7 +996,11 @@ void AwesomePlayer::onCheckAudioStatus() {
|
||||
|
||||
if (mWatchForAudioSeekComplete && !mAudioPlayer->isSeeking()) {
|
||||
mWatchForAudioSeekComplete = false;
|
||||
notifyListener_l(MEDIA_SEEK_COMPLETE);
|
||||
|
||||
if (!mSeekNotificationSent) {
|
||||
notifyListener_l(MEDIA_SEEK_COMPLETE);
|
||||
mSeekNotificationSent = true;
|
||||
}
|
||||
}
|
||||
|
||||
status_t finalStatus;
|
||||
|
||||
@@ -132,6 +132,7 @@ private:
|
||||
int64_t mVideoTimeUs;
|
||||
|
||||
bool mSeeking;
|
||||
bool mSeekNotificationSent;
|
||||
int64_t mSeekTimeUs;
|
||||
|
||||
bool mWatchForAudioSeekComplete;
|
||||
|
||||
Reference in New Issue
Block a user