Bug 1292453 - MDSM should enter dormant state when its reader is suspended. draft
authorJW Wang <jwwang@mozilla.com>
Tue, 09 Aug 2016 14:43:22 +0800
changeset 399039 9984d1d3916ca57f34fb85888848bd7f3be5464c
parent 399038 9e0da3f99d36231f1f2d2f8d9b766a47b774352c
child 527825 667c61388078e2c042b6345049899355aa9d66df
push id25717
push userjwwang@mozilla.com
push dateWed, 10 Aug 2016 09:22:37 +0000
bugs1292453
milestone51.0a1
Bug 1292453 - MDSM should enter dormant state when its reader is suspended. MozReview-Commit-ID: Fg7jBtGEHBy
dom/media/MediaDecoderStateMachine.cpp
--- 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);