Bug 1295541 - Move mInitPromise.DisconnectIfExists() into DecoderData::ShutdownDecoder().
MozReview-Commit-ID: 67MvFfSU73X
--- a/dom/media/MediaFormatReader.cpp
+++ b/dom/media/MediaFormatReader.cpp
@@ -98,17 +98,16 @@ MediaFormatReader::Shutdown()
mSeekPromise.RejectIfExists(NS_ERROR_FAILURE, __func__);
mSkipRequest.DisconnectIfExists();
if (mAudio.mDecoder) {
Reset(TrackInfo::kAudioTrack);
if (mAudio.HasPromise()) {
mAudio.RejectPromise(CANCELED, __func__);
}
- mAudio.mInitPromise.DisconnectIfExists();
mAudio.ShutdownDecoder();
}
if (mAudio.mTrackDemuxer) {
mAudio.ResetDemuxer();
mAudio.mTrackDemuxer->BreakCycles();
mAudio.mTrackDemuxer = nullptr;
}
if (mAudio.mTaskQueue) {
@@ -118,17 +117,16 @@ MediaFormatReader::Shutdown()
}
MOZ_ASSERT(!mAudio.HasPromise());
if (mVideo.mDecoder) {
Reset(TrackInfo::kVideoTrack);
if (mVideo.HasPromise()) {
mVideo.RejectPromise(CANCELED, __func__);
}
- mVideo.mInitPromise.DisconnectIfExists();
mVideo.ShutdownDecoder();
}
if (mVideo.mTrackDemuxer) {
mVideo.ResetDemuxer();
mVideo.mTrackDemuxer->BreakCycles();
mVideo.mTrackDemuxer = nullptr;
}
if (mVideo.mTaskQueue) {
@@ -1966,20 +1964,17 @@ MediaFormatReader::UpdateBufferedWithPro
void MediaFormatReader::ReleaseMediaResources()
{
// Before freeing a video codec, all video buffers needed to be released
// even from graphics pipeline.
if (mVideoFrameContainer) {
mVideoFrameContainer->ClearCurrentFrame();
}
- mVideo.mInitPromise.DisconnectIfExists();
mVideo.ShutdownDecoder();
-
- mAudio.mInitPromise.DisconnectIfExists();
mAudio.ShutdownDecoder();
}
bool
MediaFormatReader::VideoIsHardwareAccelerated() const
{
return mVideo.mIsHardwareAccelerated;
}
--- a/dom/media/MediaFormatReader.h
+++ b/dom/media/MediaFormatReader.h
@@ -271,16 +271,17 @@ private:
// Monitor protecting mDescription and mDecoder.
Monitor mMonitor;
// The platform decoder.
RefPtr<MediaDataDecoder> mDecoder;
const char* mDescription;
void ShutdownDecoder()
{
+ mInitPromise.DisconnectIfExists();
MonitorAutoLock mon(mMonitor);
if (mDecoder) {
mDecoder->Shutdown();
}
mDescription = "shutdown";
mDecoder = nullptr;
}