Bug 1308071. Part 3 - early return from VisibilityChanged() if mInfo is nothing.
VisibilityChanged() could be called before reading metadata.
MozReview-Commit-ID: F3OIiC4mXo3
--- 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;