Bug 1322799 part 8 - move AccurateSeekTask::MaybeFinishSeek(); r?jwwang
MozReview-Commit-ID: HGcK5zUxyge
--- a/dom/media/AccurateSeekTask.cpp
+++ b/dom/media/AccurateSeekTask.cpp
@@ -127,18 +127,9 @@ AccurateSeekTask::HandleNotWaited(const
RefPtr<AccurateSeekTask::SeekTaskPromise>
AccurateSeekTask::Seek(const media::TimeUnit& aDuration)
{
AssertOwnerThread();
return mSeekTaskPromise.Ensure(__func__);
}
-void
-AccurateSeekTask::MaybeFinishSeek()
-{
- AssertOwnerThread();
- if (mDoneAudioSeeking && mDoneVideoSeeking) {
- Resolve(__func__); // Call to MDSM::SeekCompleted();
- }
-}
-
} // namespace mozilla
--- a/dom/media/AccurateSeekTask.h
+++ b/dom/media/AccurateSeekTask.h
@@ -38,18 +38,16 @@ public:
void HandleAudioWaited(MediaData::Type aType) override;
void HandleVideoWaited(MediaData::Type aType) override;
void HandleNotWaited(const WaitForDataRejectValue& aRejection) override;
~AccurateSeekTask();
- void MaybeFinishSeek();
-
/*
* Internal state.
*/
const media::TimeUnit mCurrentTimeBeforeSeek;
const uint32_t mAudioRate; // Audio sample rate.
bool mDoneAudioSeeking;
bool mDoneVideoSeeking;
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -923,17 +923,17 @@ public:
return;
}
}
if (!mTask->mDoneAudioSeeking) {
RequestAudioData();
return;
}
- mTask->MaybeFinishSeek();
+ MaybeFinishSeek();
}
void HandleVideoDecoded(MediaData* aVideo, TimeStamp aDecodeStart) override
{
MOZ_ASSERT(mSeekTaskRequest.Exists(), "Seek shouldn't be finished");
RefPtr<MediaData> video(aVideo);
MOZ_ASSERT(video);
@@ -956,17 +956,17 @@ public:
return;
}
}
if (!mTask->mDoneVideoSeeking) {
RequestVideoData();
return;
}
- mTask->MaybeFinishSeek();
+ MaybeFinishSeek();
}
void HandleNotDecoded(MediaData::Type aType, const MediaResult& aError) override
{
MOZ_ASSERT(mSeekTaskRequest.Exists(), "Seek shouldn't be finished");
SSAMPLELOG("OnNotDecoded type=%d reason=%u", aType, aError.Code());
@@ -999,17 +999,17 @@ public:
mTask->mIsVideoQueueFinished = true;
mTask->mDoneVideoSeeking = true;
if (mTask->mFirstVideoFrameAfterSeek) {
// Hit the end of stream. Move mFirstVideoFrameAfterSeek into
// mSeekedVideoData so we have something to display after seeking.
mTask->mSeekedVideoData = mTask->mFirstVideoFrameAfterSeek.forget();
}
}
- mTask->MaybeFinishSeek();
+ MaybeFinishSeek();
return;
}
// This is a decode error, delegate to the generic error path.
mTask->RejectIfExist(aError, __func__);
}
void HandleAudioWaited(MediaData::Type aType) override
@@ -1240,16 +1240,23 @@ private:
MOZ_ASSERT(!mTask->mSeekedVideoData, "Should be the 1st sample after seeking");
mTask->mSeekedVideoData = video;
mTask->mDoneVideoSeeking = true;
}
return NS_OK;
}
+ void MaybeFinishSeek()
+ {
+ if (mTask->mDoneAudioSeeking && mTask->mDoneVideoSeeking) {
+ mTask->Resolve(__func__); // Call to MDSM::SeekCompleted();
+ }
+ }
+
void OnSeekTaskResolved(const SeekTaskResolveValue& aValue)
{
mSeekTaskRequest.Complete();
if (aValue.mSeekedAudioData) {
mMaster->Push(aValue.mSeekedAudioData);
mMaster->mDecodedAudioEndTime = std::max(
aValue.mSeekedAudioData->GetEndTime(), mMaster->mDecodedAudioEndTime);