зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1317576. Part 6 - ensure 'playbackEnded' is notified when seeking to the end on a paused media element. r=cpearce
MozReview-Commit-ID: 4fzru2oHaPV --HG-- extra : rebase_source : 0c2c3e639ec360fe5826cd5bbcd2f0879fa3f158
This commit is contained in:
Родитель
1927c644dc
Коммит
23c537597f
|
@ -1053,8 +1053,7 @@ public:
|
||||||
// is restarted correctly.
|
// is restarted correctly.
|
||||||
mMaster->StopPlayback();
|
mMaster->StopPlayback();
|
||||||
|
|
||||||
if (mMaster->mPlayState == MediaDecoder::PLAY_STATE_PLAYING &&
|
if (!mSentPlaybackEndedEvent) {
|
||||||
!mSentPlaybackEndedEvent) {
|
|
||||||
int64_t clockTime = std::max(mMaster->AudioEndTime(), mMaster->VideoEndTime());
|
int64_t clockTime = std::max(mMaster->AudioEndTime(), mMaster->VideoEndTime());
|
||||||
clockTime = std::max(int64_t(0), std::max(clockTime, mMaster->Duration().ToMicroseconds()));
|
clockTime = std::max(int64_t(0), std::max(clockTime, mMaster->Duration().ToMicroseconds()));
|
||||||
mMaster->UpdatePlaybackPosition(clockTime);
|
mMaster->UpdatePlaybackPosition(clockTime);
|
||||||
|
@ -1507,6 +1506,12 @@ SeekingState::SeekCompleted()
|
||||||
// once we download more data!
|
// once we download more data!
|
||||||
AudioQueue().Finish();
|
AudioQueue().Finish();
|
||||||
VideoQueue().Finish();
|
VideoQueue().Finish();
|
||||||
|
|
||||||
|
// We won't start MediaSink when paused. m{Audio,Video}Completed will
|
||||||
|
// remain false and 'playbackEnded' won't be notified. Therefore we
|
||||||
|
// need to set these flags explicitly when seeking to the end.
|
||||||
|
mMaster->mAudioCompleted = true;
|
||||||
|
mMaster->mVideoCompleted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We want to resolve the seek request prior finishing the first frame
|
// We want to resolve the seek request prior finishing the first frame
|
||||||
|
|
Загрузка…
Ссылка в новой задаче