Bug 1307699. Part 4 - move DiscardSeekTaskIfExist() into the exit action of SeekingState. r=kaku

MozReview-Commit-ID: 9FDgZLHg8Wj

--HG--
extra : rebase_source : a9bd00682c8de6dae29a5ca0e9e5fd7988341cfe
This commit is contained in:
JW Wang 2016-10-05 14:47:13 +08:00
Родитель 96d4a513a3
Коммит 52c66ad894
2 изменённых файлов: 9 добавлений и 29 удалений

Просмотреть файл

@ -400,7 +400,6 @@ public:
void Enter() override
{
mMaster->DiscardSeekTaskIfExist();
if (mMaster->IsPlaying()) {
mMaster->StopPlayback();
}
@ -672,9 +671,6 @@ public:
void Enter() override
{
// Discard the existing seek task.
mMaster->DiscardSeekTaskIfExist();
// SeekTask will register its callbacks to MediaDecoderReaderWrapper.
mMaster->CancelMediaDecoderReaderWrapperCallback();
@ -737,6 +733,15 @@ public:
void Exit() override
{
mSeekTaskRequest.DisconnectIfExists();
if (mMaster->mSeekTask) {
mMaster->mCurrentSeek.RejectIfExists(__func__);
mMaster->mSeekTask->Discard();
mMaster->mSeekTask = nullptr;
// Reset the MediaDecoderReaderWrapper's callbask.
mMaster->SetMediaDecoderReaderWrapperCallback();
}
}
State GetState() const override
@ -828,8 +833,6 @@ private:
}
mMaster->DecodeError(aValue.mError);
mMaster->DiscardSeekTaskIfExist();
}
void SeekCompleted()
@ -879,10 +882,6 @@ private:
// to ensure that the seeked event is fired prior loadeded.
mMaster->mCurrentSeek.Resolve(nextState == DECODER_STATE_COMPLETED, __func__);
// Discard and nullify the seek task.
// Reset the MediaDecoderReaderWrapper's callbask.
mMaster->DiscardSeekTaskIfExist();
// NOTE: Discarding the mSeekTask must be done before here. The following code
// might ask the MediaDecoderReaderWrapper to request media data, however, the
// SeekTask::Discard() will ask MediaDecoderReaderWrapper to discard media
@ -1967,8 +1966,6 @@ MediaDecoderStateMachine::Shutdown()
mQueuedSeek.RejectIfExists(__func__);
DiscardSeekTaskIfExist();
// Shutdown happens will decode timer is active, we need to disconnect and
// dispose of the timer.
mVideoDecodeSuspendTimer.Reset();
@ -2316,19 +2313,6 @@ MediaDecoderStateMachine::InitiateSeek(SeekJob aSeekJob)
mStateObj->Enter();
}
void
MediaDecoderStateMachine::DiscardSeekTaskIfExist()
{
if (mSeekTask) {
mCurrentSeek.RejectIfExists(__func__);
mSeekTask->Discard();
mSeekTask = nullptr;
// Reset the MediaDecoderReaderWrapper's callbask.
SetMediaDecoderReaderWrapperCallback();
}
}
void
MediaDecoderStateMachine::DispatchAudioDecodeTaskIfNeeded()
{

Просмотреть файл

@ -622,10 +622,6 @@ private:
// mSeekTask is responsible for executing the current seek request.
RefPtr<SeekTask> mSeekTask;
// This method discards the seek task and then get the ownership of
// MedaiDecoderReaderWarpper back via registering MDSM's callback into it.
void DiscardSeekTaskIfExist();
// Media Fragment end time in microseconds. Access controlled by decoder monitor.
int64_t mFragmentEndTime;