Bug 1229742: P2. Don't reject data promise if new data is pending. r?gerald
MozReview-Commit-ID: LaQeRoffA6B
--- 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;
}