Bug 1288344. Part 1 - Don't change play state when entering/exiting dormant state. r?cpearce draft
authorJW Wang <jwwang@mozilla.com>
Tue, 12 Jul 2016 14:32:36 +0800
changeset 390526 d830d576becccbdc0415a4e2c0b76aa5b17c5d61
parent 390525 ce93a217847da97edc873399697f1f92e8679695
child 390527 48b058fc4eef1ede1949b6c670b92dc4caf4f693
push id23686
push userjwwang@mozilla.com
push dateThu, 21 Jul 2016 09:27:03 +0000
reviewerscpearce
bugs1288344
milestone50.0a1
Bug 1288344. Part 1 - Don't change play state when entering/exiting dormant state. r?cpearce MozReview-Commit-ID: 24damxCvWl8
dom/media/MediaDecoder.cpp
dom/media/omx/MediaOmxCommonDecoder.cpp
--- a/dom/media/MediaDecoder.cpp
+++ b/dom/media/MediaDecoder.cpp
@@ -367,30 +367,18 @@ MediaDecoder::UpdateDormantState(bool aD
     }
   }
 
   if (prevDormant == mIsDormant) {
     // No update to dormant state
     return;
   }
 
-  if (mIsDormant) {
-    DECODER_LOG("UpdateDormantState() entering DORMANT state");
-    // enter dormant state
-    mDecoderStateMachine->DispatchSetDormant(true);
-    if (IsEnded()) {
-      mWasEndedWhenEnteredDormant = true;
-    }
-    mNextState = mPlayState;
-    ChangeState(PLAY_STATE_LOADING);
-  } else {
-    DECODER_LOG("UpdateDormantState() leaving DORMANT state");
-    // exit dormant state
-    mDecoderStateMachine->DispatchSetDormant(false);
-  }
+  DECODER_LOG("UpdateDormantState() %s DORMANT state", mIsDormant ? "entering" : "exiting");
+  mDecoderStateMachine->DispatchSetDormant(mIsDormant);
 }
 
 void
 MediaDecoder::DormantTimerExpired(nsITimer* aTimer, void* aClosure)
 {
   MOZ_ASSERT(NS_IsMainThread());
   MOZ_ASSERT(aClosure);
   MediaDecoder* decoder = static_cast<MediaDecoder*>(aClosure);
--- a/dom/media/omx/MediaOmxCommonDecoder.cpp
+++ b/dom/media/omx/MediaOmxCommonDecoder.cpp
@@ -151,18 +151,16 @@ MediaOmxCommonDecoder::ResumeStateMachin
   mFallbackToStateMachine = true;
   mAudioOffloadPlayer = nullptr;
   SeekTarget target = SeekTarget(mLogicalPosition,
                                  SeekTarget::Accurate,
                                  MediaDecoderEventVisibility::Suppressed);
   // Call Seek of MediaDecoderStateMachine to suppress seek events.
   GetStateMachine()->InvokeSeek(target);
 
-  mNextState = mPlayState;
-  ChangeState(PLAY_STATE_LOADING);
   // exit dormant state
   GetStateMachine()->DispatchSetDormant(false);
   UpdateLogicalPosition();
 }
 
 void
 MediaOmxCommonDecoder::AudioOffloadTearDown()
 {