Bug 1349097 P3 - don't dispatch another ended event while resuming the video decoder of an already-ended playback; r?jwwang
If the play state is already PLAY_STATE_ENDED, make MediaDecoder::PlaybackEnded() return early to prevent dispatching multiple ended event.
MozReview-Commit-ID: G5OU7WLYuMm
--- a/dom/media/MediaDecoder.cpp
+++ b/dom/media/MediaDecoder.cpp
@@ -987,17 +987,18 @@ MediaDecoder::IsShutdown() const
}
void
MediaDecoder::PlaybackEnded()
{
MOZ_ASSERT(NS_IsMainThread());
MOZ_DIAGNOSTIC_ASSERT(!IsShutdown());
- if (mLogicallySeeking || mPlayState == PLAY_STATE_LOADING) {
+ if (mLogicallySeeking || mPlayState == PLAY_STATE_LOADING ||
+ mPlayState == PLAY_STATE_ENDED) {
LOG("MediaDecoder::PlaybackEnded bailed out, "
"mLogicallySeeking=%d mPlayState=%s",
mLogicallySeeking.Ref(), ToPlayStateStr(mPlayState));
return;
}
LOG("MediaDecoder::PlaybackEnded");