Bug 1292453 - MDSM should enter dormant state when its reader is suspended.
MozReview-Commit-ID: Fg7jBtGEHBy
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -1447,24 +1447,26 @@ void MediaDecoderStateMachine::BufferedR
mObservedDuration = std::max(mObservedDuration.Ref(), end);
}
}
}
void MediaDecoderStateMachine::ReaderSuspendedChanged()
{
MOZ_ASSERT(OnTaskQueue());
- DECODER_LOG("ReaderSuspendedChanged: suspended = %d", mIsReaderSuspended.Ref());
-
- if (IsShutdown() || !HasVideo() || mIsReaderSuspended || IsDecodingFirstFrame()) {
+ DECODER_LOG("ReaderSuspendedChanged: %d", mIsReaderSuspended.Ref());
+
+ if (IsShutdown()) {
return;
}
-
- InitiateDecodeRecoverySeek(TrackSet(TrackInfo::kAudioTrack,
- TrackInfo::kVideoTrack));
+ if (mIsReaderSuspended && mState != DECODER_STATE_DORMANT) {
+ SetDormant(true);
+ } else if (!mIsReaderSuspended && mState == DECODER_STATE_DORMANT) {
+ SetDormant(false);
+ }
}
void
MediaDecoderStateMachine::ReadMetadata()
{
MOZ_ASSERT(OnTaskQueue());
MOZ_ASSERT(!IsShutdown());
MOZ_ASSERT(mState == DECODER_STATE_DECODING_METADATA);