Bug 1284177 - P3: Fix ended event reporting for suspended video decode. r?jwwang draft
authorDan Glastonbury <dglastonbury@mozilla.com>
Mon, 04 Jul 2016 12:35:25 +1000
changeset 397757 0ca1ceb82cda822b98e961eb586eb9020a41a736
parent 397756 b69c84cfbd632e5fa3ca9915fbf2b3928e2f0156
child 397758 6780c120b01e6ce8c0bab97a6ca91085e2463965
push id25386
push userbmo:dglastonbury@mozilla.com
push dateMon, 08 Aug 2016 08:39:00 +0000
reviewersjwwang
bugs1284177
milestone51.0a1
Bug 1284177 - P3: Fix ended event reporting for suspended video decode. r?jwwang Suspended videos were blocking the video from completing. MozReview-Commit-ID: 2eE97FEUMPu
dom/media/MediaDecoderStateMachine.cpp
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -838,16 +838,17 @@ MediaDecoderStateMachine::CheckIfDecodeC
 
   if (IsShutdown() ||
       mState == DECODER_STATE_SEEKING ||
       mState == DECODER_STATE_COMPLETED) {
     // Don't change our state if we've already been shutdown, or we're seeking,
     // since we don't want to abort the shutdown or seek processes.
     return;
   }
+  //  if ((!IsVideoDecoding() || IsVideoDecodeSuspended()) && !IsAudioDecoding()) {
   if (!IsVideoDecoding() && !IsAudioDecoding()) {
     // We've finished decoding all active streams,
     // so move to COMPLETED state.
     SetState(DECODER_STATE_COMPLETED);
     DispatchDecodeTasksIfNeeded();
     ScheduleStateMachine();
   }
   DECODER_LOG("CheckIfDecodeComplete %scompleted",
@@ -1320,17 +1321,17 @@ void MediaDecoderStateMachine::PlayState
   ScheduleStateMachine();
 }
 
 void MediaDecoderStateMachine::VisibilityChanged()
 {
   MOZ_ASSERT(OnTaskQueue());
   DECODER_LOG("VisibilityChanged: mIsVisible=%d, "
               "mVideoDecodeSuspended=%d, mIsReaderSuspended=%d",
-              mIsVisible.Ref(), mVideoDecodeSuspended, mIsReaderSuspended.Ref());
+              mIsVisible.Ref(), mVideoDecodeSuspended.Ref(), mIsReaderSuspended.Ref());
 
   if (!HasVideo()) {
     return;
   }
 
   // If not playing then there's nothing to do.
   if (mPlayState != MediaDecoder::PLAY_STATE_PLAYING) {
     return;