Bug 1329110. Part 6 - remove StateObject::HandleWaitingForData().
Since DecodingState is the only one that overrides the function, we will let it
just override HandleWaitingFor{Audio,Video}. We also reduce the code complexity
because it is hard to trace the code when one virtual function calls another
virtual function.
MozReview-Commit-ID: AdLXpDgvOyx
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -193,40 +193,37 @@ public:
// Event handlers for various events.
virtual void HandleCDMProxyReady() {}
virtual void HandleAudioDecoded(MediaData* aAudio) {}
virtual void HandleVideoDecoded(MediaData* aVideo, TimeStamp aDecodeStart) {}
virtual void HandleAudioWaited(MediaData::Type aType);
virtual void HandleVideoWaited(MediaData::Type aType);
virtual void HandleNotWaited(const WaitForDataRejectValue& aRejection);
virtual void HandleEndOfStream() {}
- virtual void HandleWaitingForData() {}
virtual void HandleAudioCaptured() {}
virtual void HandleWaitingForAudio()
{
mMaster->WaitForData(MediaData::AUDIO_DATA);
- HandleWaitingForData();
}
virtual void HandleAudioCanceled()
{
mMaster->EnsureAudioDecodeTaskQueued();
}
virtual void HandleEndOfAudio()
{
AudioQueue().Finish();
HandleEndOfStream();
}
virtual void HandleWaitingForVideo()
{
mMaster->WaitForData(MediaData::VIDEO_DATA);
- HandleWaitingForData();
}
virtual void HandleVideoCanceled()
{
mMaster->EnsureVideoDecodeTaskQueued();
}
virtual void HandleEndOfVideo()
@@ -662,18 +659,25 @@ public:
mMaster->PushVideo(aVideo);
DispatchDecodeTasksIfNeeded();
MaybeStopPrerolling();
CheckSlowDecoding(aDecodeStart);
}
void HandleEndOfStream() override;
- void HandleWaitingForData() override
+ void HandleWaitingForAudio() override
{
+ mMaster->WaitForData(MediaData::AUDIO_DATA);
+ MaybeStopPrerolling();
+ }
+
+ void HandleWaitingForVideo() override
+ {
+ mMaster->WaitForData(MediaData::VIDEO_DATA);
MaybeStopPrerolling();
}
void HandleAudioCaptured() override
{
MaybeStopPrerolling();
// MediaSink is changed. Schedule Step() to check if we can start playback.
mMaster->ScheduleStateMachine();