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
--- 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());
}