Bug 1322799 part 8 - move AccurateSeekTask::MaybeFinishSeek(); r?jwwang draft
authorKaku Kuo <kaku@mozilla.com>
Fri, 09 Dec 2016 13:25:08 -1000
changeset 449370 180a3c47a5345c18b28ad57edc904fba502acee3
parent 449369 3006aa6e219412bb7363b5fa12790fe107ca144a
child 449371 c9afe9aa19f2448af7045a1c0c27424e7e085050
push id38552
push userbmo:kaku@mozilla.com
push dateWed, 14 Dec 2016 02:51:42 +0000
reviewersjwwang
bugs1322799
milestone53.0a1
Bug 1322799 part 8 - move AccurateSeekTask::MaybeFinishSeek(); r?jwwang MozReview-Commit-ID: HGcK5zUxyge
dom/media/AccurateSeekTask.cpp
dom/media/AccurateSeekTask.h
dom/media/MediaDecoderStateMachine.cpp
--- 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);