Bug 1308071. Part 3 - early return from VisibilityChanged() if mInfo is nothing. draft
authorJW Wang <jwwang@mozilla.com>
Thu, 06 Oct 2016 11:28:01 +0800
changeset 424178 7cd924efbede21e3233c6bde6c3af6527c8ee889
parent 424177 b43069b4a5e87190a418f99d1757a3fe88152cf3
child 424179 d23bb1e07b47f78ceb9a288b2e1ab0fd9190a4bf
push id32093
push userjwwang@mozilla.com
push dateWed, 12 Oct 2016 10:15:24 +0000
bugs1308071
milestone52.0a1
Bug 1308071. Part 3 - early return from VisibilityChanged() if mInfo is nothing. VisibilityChanged() could be called before reading metadata. MozReview-Commit-ID: F3OIiC4mXo3
dom/media/MediaDecoderStateMachine.cpp
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -2161,17 +2161,17 @@ ReportRecoveryTelemetry(const TimeStamp&
 
 void MediaDecoderStateMachine::VisibilityChanged()
 {
   MOZ_ASSERT(OnTaskQueue());
   DECODER_LOG("VisibilityChanged: mIsVisible=%d, "
               "mVideoDecodeSuspended=%c, mIsReaderSuspended=%d",
               mIsVisible.Ref(), mVideoDecodeSuspended ? 'T' : 'F', mIsReaderSuspended.Ref());
 
-  if (!HasVideo()) {
+  if (mInfo.isNothing() || !HasVideo()) {
     return;
   }
 
   // Start timer to trigger suspended decoding state when going invisible.
   if (!mIsVisible) {
     TimeStamp target = TimeStamp::Now() + SuspendBackgroundVideoDelay();
 
     RefPtr<MediaDecoderStateMachine> self = this;