Bug 1229742: P2. Don't reject data promise if new data is pending. r?gerald draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Tue, 09 Feb 2016 00:36:47 +1100
changeset 329543 7f7b70b3ff296e80eb14b04aecf0a80bf3e7090a
parent 329542 38111f5654d5813d5413766c70bbb417af30fbea
child 513974 6cff49c086b965c6ec35f0cde46df70c8892f5d1
push id10542
push userbmo:jyavenard@mozilla.com
push dateMon, 08 Feb 2016 13:46:40 +0000
reviewersgerald
bugs1229742
milestone47.0a1
Bug 1229742: P2. Don't reject data promise if new data is pending. r?gerald MozReview-Commit-ID: LaQeRoffA6B
dom/media/MediaFormatReader.cpp
--- a/dom/media/MediaFormatReader.cpp
+++ b/dom/media/MediaFormatReader.cpp
@@ -1109,18 +1109,20 @@ MediaFormatReader::Update(TrackType aTra
             !decoder.mNextStreamSourceID) {
           // We have completed draining the decoder following WaitingForData.
           // Set up the internal seek machinery to be able to resume from the
           // last sample decoded.
           LOG("Seeking to last sample time: %lld",
               decoder.mLastSampleTime.ref().ToMicroseconds());
           InternalSeek(aTrack, InternalSeekTarget(decoder.mLastSampleTime.ref(), true));
         }
-        LOG("Rejecting %s promise: WAITING_FOR_DATA", TrackTypeToStr(aTrack));
-        decoder.RejectPromise(WAITING_FOR_DATA, __func__);
+        if (!decoder.mReceivedNewData) {
+          LOG("Rejecting %s promise: WAITING_FOR_DATA", TrackTypeToStr(aTrack));
+          decoder.RejectPromise(WAITING_FOR_DATA, __func__);
+        }
       }
       // Now that draining has completed, we check if we have received
       // new data again as the result may now be different from the earlier
       // run.
       if (UpdateReceivedNewData(aTrack)) {
         LOGV("Nothing more to do");
         return;
       }