Bug 1276495: Don't reset audio promises for video only seek. r?jwwang,jya draft
authorDan Glastonbury <dglastonbury@mozilla.com>
Mon, 30 May 2016 15:54:04 +1000
changeset 372698 b1fb27b91c98d531991a855edf2b6f54a229ce6c
parent 372484 2c7440e46d8786b2c82a1d2004e2b6d9d13f4046
child 522221 ea6128bc3379114bfad56964bc7d4a1bad567c3e
push id19569
push userbmo:dglastonbury@mozilla.com
push dateMon, 30 May 2016 06:41:46 +0000
reviewersjwwang, jya
bugs1276495
milestone49.0a1
Bug 1276495: Don't reset audio promises for video only seek. r?jwwang,jya ResetDecode was disconnecting mAudioDataRequest when seeking video only. This means that, if a RequestAudioData() was outstanding, mAudioDataRequest and MFR.mAudio.mHasPromise would become out-of-sync. MozReview-Commit-ID: EaS5NERsxpt
dom/media/MediaDecoderReaderWrapper.cpp
--- a/dom/media/MediaDecoderReaderWrapper.cpp
+++ b/dom/media/MediaDecoderReaderWrapper.cpp
@@ -392,19 +392,21 @@ MediaDecoderReaderWrapper::SetIdle()
   mReader->OwnerThread()->Dispatch(r.forget());
 }
 
 void
 MediaDecoderReaderWrapper::ResetDecode(TargetQueues aQueues)
 {
   MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
 
-  mAudioDataRequest.DisconnectIfExists();
+  if (aQueues == MediaDecoderReader::AUDIO_VIDEO) {
+    mAudioDataRequest.DisconnectIfExists();
+    mAudioWaitRequest.DisconnectIfExists();
+  }
   mVideoDataRequest.DisconnectIfExists();
-  mAudioWaitRequest.DisconnectIfExists();
   mVideoWaitRequest.DisconnectIfExists();
 
   nsCOMPtr<nsIRunnable> r =
     NewRunnableMethod<TargetQueues>(mReader,
                                     &MediaDecoderReader::ResetDecode,
                                     aQueues);
   mReader->OwnerThread()->Dispatch(r.forget());
 }