Bug 1274626 part 6 - make MDSM change video decoder dynamically; r=jwwang
MozReview-Commit-ID: LK0gt8HhnVn
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -1357,16 +1357,17 @@ void MediaDecoderStateMachine::Visibilit
// Resuming from suspended decoding
// If suspend timer exists, destroy it.
mVideoDecodeSuspendTimer.Reset();
if (mVideoDecodeSuspended) {
mVideoDecodeSuspended = false;
+ mReader->SetVideoBlankDecode(false);
if (mIsReaderSuspended) {
return;
}
// If an existing seek is in flight don't bother creating a new
// one to catch up.
if (mSeekTask || mQueuedSeek.Exists()) {
@@ -2635,17 +2636,17 @@ bool MediaDecoderStateMachine::IsStateMa
{
MOZ_ASSERT(OnTaskQueue());
return mDispatchedStateMachine || mDelayedScheduler.IsScheduled();
}
bool MediaDecoderStateMachine::IsVideoDecodeSuspended() const
{
MOZ_ASSERT(OnTaskQueue());
- return mVideoDecodeSuspended || mIsReaderSuspended;
+ return mIsReaderSuspended;
}
void
MediaDecoderStateMachine::LogicalPlaybackRateChanged()
{
MOZ_ASSERT(OnTaskQueue());
if (mLogicalPlaybackRate == 0) {
@@ -2927,16 +2928,17 @@ MediaDecoderStateMachine::VideoRequestSt
}
void
MediaDecoderStateMachine::OnSuspendTimerResolved()
{
DECODER_LOG("OnSuspendTimerResolved");
mVideoDecodeSuspendTimer.CompleteRequest();
mVideoDecodeSuspended = true;
+ mReader->SetVideoBlankDecode(true);
}
void
MediaDecoderStateMachine::OnSuspendTimerRejected()
{
DECODER_LOG("OnSuspendTimerRejected");
MOZ_ASSERT(OnTaskQueue());
MOZ_ASSERT(!mVideoDecodeSuspended);