Bug 1314884. Part 2 - Let DORMANT transition to SEEKING when play state changes to PLAYING since we need to seek anyway whenever exiting dormant.
MozReview-Commit-ID: 9d7Gea1iclh
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -389,18 +389,17 @@ public:
private:
SeekJob mPendingSeek;
};
/**
* Purpose: release decoder resources to save memory and hardware resources.
*
* Transition to:
- * DECODING_FIRSTFRAME when play state changes to PLAYING.
- * SEEKING if any seek request.
+ * SEEKING if any seek request or play state changes to PLAYING.
*/
class MediaDecoderStateMachine::DormantState
: public MediaDecoderStateMachine::StateObject
{
public:
explicit DormantState(Master* aPtr) : StateObject(aPtr) {}
void Enter()
@@ -1290,17 +1289,18 @@ DormantState::HandleSeek(SeekTarget aTar
void
MediaDecoderStateMachine::
DormantState::HandlePlayStateChanged(MediaDecoder::PlayState aPlayState)
{
if (aPlayState == MediaDecoder::PLAY_STATE_PLAYING) {
// Exit dormant when the user wants to play.
MOZ_ASSERT(!Info().IsEncrypted() || mMaster->mCDMProxy);
- SetState<DecodingFirstFrameState>(Move(mPendingSeek));
+ MOZ_ASSERT(mMaster->mSentFirstFrameLoadedEvent);
+ SetState<SeekingState>(Move(mPendingSeek));
}
}
void
MediaDecoderStateMachine::
WaitForCDMState::HandleCDMProxyReady()
{
SetState<DecodingFirstFrameState>(Move(mPendingSeek));