Bug 1355031 P2 - make sure that VideoOnlySeekBegin and VideoOnlySeekCompleted are always dispatched in pair; r?jwwang draft
authorKaku Kuo <kaku@mozilla.com>
Mon, 10 Apr 2017 17:33:38 +0800
changeset 560144 f7d581618d05e3cac229229b9c9adaa71c43011e
parent 560064 2e12a4f113da8432c555c9a15e0b631d408abbc8
child 623625 251b32c68968fe43ad3d5608ba0fc2dbc238a870
push id53344
push userbmo:kaku@mozilla.com
push dateTue, 11 Apr 2017 07:17:29 +0000
reviewersjwwang
bugs1355031
milestone55.0a1
Bug 1355031 P2 - make sure that VideoOnlySeekBegin and VideoOnlySeekCompleted are always dispatched in pair; r?jwwang MozReview-Commit-ID: FV03vlMtjS3
dom/media/MediaDecoderStateMachine.cpp
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -1027,16 +1027,25 @@ public:
   {
     MOZ_ASSERT(aSeekJob.mTarget->IsAccurate() || aSeekJob.mTarget->IsFast());
     mCurrentTimeBeforeSeek = mMaster->GetMediaTime();
     return SeekingState::Enter(Move(aSeekJob), aVisibility);
   }
 
   void Exit() override
   {
+    if (mSeekJob.Exists() &&
+        mSeekJob.mTarget.isSome() &&
+        mSeekJob.mTarget->IsVideoOnly()) {
+      // We are discarding this video-only seek operation now, and we still need
+      // to dispatch an event so that the UI can change in response to the end
+      // of video-only seek.
+      mMaster->mOnPlaybackEvent.Notify(MediaEventType::VideoOnlySeekCompleted);
+    }
+
     // Disconnect MediaDecoder.
     mSeekJob.RejectIfExists(__func__);
 
     // Disconnect MediaDecoderReaderWrapper.
     mSeekRequest.DisconnectIfExists();
 
     mWaitRequest.DisconnectIfExists();
   }