diff --git a/content/media/MediaDecoderStateMachine.cpp b/content/media/MediaDecoderStateMachine.cpp index 37214602693..c5bcd7a9fb2 100644 --- a/content/media/MediaDecoderStateMachine.cpp +++ b/content/media/MediaDecoderStateMachine.cpp @@ -2162,9 +2162,6 @@ MediaDecoderStateMachine::SeekCompleted() // Try to decode another frame to detect if we're at the end... DECODER_LOG(PR_LOG_DEBUG, "Seek completed, mCurrentFrameTime=%lld", mCurrentFrameTime); - // Prevent changes in playback position before 'seeked' is fired for we - // expect currentTime equals seek target in 'seeked' callback. - mScheduler->FreezeScheduling(); { ReentrantMonitorAutoExit exitMon(mDecoder->GetReentrantMonitor()); NS_DispatchToMainThread(stopEvent, NS_DISPATCH_SYNC); @@ -2176,7 +2173,6 @@ MediaDecoderStateMachine::SeekCompleted() mQuickBuffering = false; ScheduleStateMachine(); - mScheduler->ThawScheduling(); } // Runnable to dispose of the decoder and state machine on the main thread. diff --git a/content/media/MediaDecoderStateMachineScheduler.cpp b/content/media/MediaDecoderStateMachineScheduler.cpp index ff21bf56695..421c89db2c2 100644 --- a/content/media/MediaDecoderStateMachineScheduler.cpp +++ b/content/media/MediaDecoderStateMachineScheduler.cpp @@ -94,15 +94,8 @@ MediaDecoderStateMachineScheduler::Schedule(int64_t aUsecs) { mMonitor.AssertCurrentThreadIn(); - switch(mState) { - case SCHEDULER_STATE_SHUTDOWN: + if (mState == SCHEDULER_STATE_SHUTDOWN) { return NS_ERROR_FAILURE; - case SCHEDULER_STATE_FROZEN: - mState = SCHEDULER_STATE_FROZEN_WITH_PENDING_TASK; - case SCHEDULER_STATE_FROZEN_WITH_PENDING_TASK: - return NS_OK; - case SCHEDULER_STATE_NONE: - break; } aUsecs = std::max(aUsecs, 0); @@ -171,9 +164,6 @@ void MediaDecoderStateMachineScheduler::ScheduleAndShutdown() { mMonitor.AssertCurrentThreadIn(); - if (IsFrozen()) { - ThawScheduling(); - } // Schedule next cycle to handle SHUTDOWN in state machine thread. Schedule(); // This must be set after calling Schedule() @@ -204,33 +194,4 @@ MediaDecoderStateMachineScheduler::ResetTimer() mTimeout = TimeStamp(); } -void MediaDecoderStateMachineScheduler::FreezeScheduling() -{ - mMonitor.AssertCurrentThreadIn(); - if (mState == SCHEDULER_STATE_SHUTDOWN) { - return; - } - MOZ_ASSERT(mState == SCHEDULER_STATE_NONE); - mState = !IsScheduled() ? SCHEDULER_STATE_FROZEN : - SCHEDULER_STATE_FROZEN_WITH_PENDING_TASK; - // Nullify pending timer task if any. - ++mTimerId; - mTimeout = TimeStamp(); -} - -void MediaDecoderStateMachineScheduler::ThawScheduling() -{ - mMonitor.AssertCurrentThreadIn(); - if (mState == SCHEDULER_STATE_SHUTDOWN) { - return; - } - // We should be in frozen state and no pending timer task. - MOZ_ASSERT(IsFrozen() && !IsScheduled()); - bool pendingTask = mState == SCHEDULER_STATE_FROZEN_WITH_PENDING_TASK; - mState = SCHEDULER_STATE_NONE; - if (pendingTask) { - Schedule(); - } -} - } // namespace mozilla diff --git a/content/media/MediaDecoderStateMachineScheduler.h b/content/media/MediaDecoderStateMachineScheduler.h index 6c3bc98f7f5..f79cd15066e 100644 --- a/content/media/MediaDecoderStateMachineScheduler.h +++ b/content/media/MediaDecoderStateMachineScheduler.h @@ -21,8 +21,6 @@ class ReentrantMonitor; class MediaDecoderStateMachineScheduler { enum State { SCHEDULER_STATE_NONE, - SCHEDULER_STATE_FROZEN, - SCHEDULER_STATE_FROZEN_WITH_PENDING_TASK, SCHEDULER_STATE_SHUTDOWN }; public: @@ -34,8 +32,6 @@ public: nsresult Schedule(int64_t aUsecs = 0); void ScheduleAndShutdown(); nsresult TimeoutExpired(int aTimerId); - void FreezeScheduling(); - void ThawScheduling(); bool OnStateMachineThread() const; bool IsScheduled() const; @@ -48,11 +44,6 @@ public: return mEventTarget; } - bool IsFrozen() const { - return mState == SCHEDULER_STATE_FROZEN || - mState == SCHEDULER_STATE_FROZEN_WITH_PENDING_TASK; - } - private: void ResetTimer();