Bug 1310140. Part 1 - add StateObject::HandleVideoSuspendTimeout().
MozReview-Commit-ID: 1qyDJzogSR8
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -210,16 +210,23 @@ public:
virtual bool HandleWaitingForData() { return false; }
virtual RefPtr<MediaDecoder::SeekPromise> HandleSeek(SeekTarget aTarget) = 0;
virtual bool HandleAudioCaptured() { return false; }
virtual RefPtr<ShutdownPromise> HandleShutdown();
+ virtual void HandleVideoSuspendTimeout()
+ {
+ mMaster->mVideoDecodeSuspended = true;
+ mMaster->mOnPlaybackEvent.Notify(MediaEventType::EnterVideoSuspend);
+ Reader()->SetVideoBlankDecode(true);
+ }
+
virtual void DumpDebugInfo() {}
protected:
using Master = MediaDecoderStateMachine;
explicit StateObject(Master* aPtr) : mMaster(aPtr) {}
TaskQueue* OwnerThread() const { return mMaster->mTaskQueue; }
MediaResource* Resource() const { return mMaster->mResource; }
MediaDecoderReaderWrapper* Reader() const { return mMaster->mReader; }
@@ -3231,19 +3238,17 @@ MediaDecoderStateMachine::VideoRequestSt
return "idle";
}
void
MediaDecoderStateMachine::OnSuspendTimerResolved()
{
DECODER_LOG("OnSuspendTimerResolved");
mVideoDecodeSuspendTimer.CompleteRequest();
- mVideoDecodeSuspended = true;
- mOnPlaybackEvent.Notify(MediaEventType::EnterVideoSuspend);
- mReader->SetVideoBlankDecode(true);
+ mStateObj->HandleVideoSuspendTimeout();
}
void
MediaDecoderStateMachine::OnSuspendTimerRejected()
{
DECODER_LOG("OnSuspendTimerRejected");
MOZ_ASSERT(OnTaskQueue());
MOZ_ASSERT(!mVideoDecodeSuspended);