Bug 1391142. P2 - remove MDSM::mResource and related functions.
MozReview-Commit-ID: 4od7b8YNrMh
--- a/dom/media/MediaDecoder.cpp
+++ b/dom/media/MediaDecoder.cpp
@@ -560,17 +560,16 @@ MediaDecoder::OnDecoderDoctorEvent(Decod
DecoderDoctorDiagnostics diags;
diags.StoreEvent(doc, aEvent, __func__);
}
void
MediaDecoder::FinishShutdown()
{
MOZ_ASSERT(NS_IsMainThread());
- mDecoderStateMachine->BreakCycles();
SetStateMachine(nullptr);
mVideoFrameContainer = nullptr;
MediaShutdownManager::Instance().Unregister(this);
}
nsresult
MediaDecoder::InitializeStateMachine()
{
@@ -804,19 +803,19 @@ void
MediaDecoder::FirstFrameLoaded(nsAutoPtr<MediaInfo> aInfo,
MediaDecoderEventVisibility aEventVisibility)
{
MOZ_ASSERT(NS_IsMainThread());
MOZ_DIAGNOSTIC_ASSERT(!IsShutdown());
AbstractThread::AutoEnter context(AbstractMainThread());
LOG("FirstFrameLoaded, channels=%u rate=%u hasAudio=%d hasVideo=%d "
- "mPlayState=%s",
+ "mPlayState=%s transportSeekable=%d",
aInfo->mAudio.mChannels, aInfo->mAudio.mRate, aInfo->HasAudio(),
- aInfo->HasVideo(), PlayStateStr());
+ aInfo->HasVideo(), PlayStateStr(), GetResource()->IsTransportSeekable());
mInfo = aInfo.forget();
Invalidate();
// The element can run javascript via events
// before reaching here, so only change the
// state if we're still set to the original
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -252,17 +252,16 @@ protected:
{
Observable,
Suppressed
};
using Master = MediaDecoderStateMachine;
explicit StateObject(Master* aPtr) : mMaster(aPtr) { }
TaskQueue* OwnerThread() const { return mMaster->mTaskQueue; }
- MediaResource* Resource() const { return mMaster->mResource; }
ReaderProxy* Reader() const { return mMaster->mReader; }
const MediaInfo& Info() const { return mMaster->Info(); }
MediaQueue<AudioData>& AudioQueue() const { return mMaster->mAudioQueue; }
MediaQueue<VideoData>& VideoQueue() const { return mMaster->mVideoQueue; }
template <class S, typename... Args, size_t... Indexes>
auto
CallEnterMemberFunction(S* aS,
@@ -2681,17 +2680,16 @@ MediaDecoderStateMachine::MediaDecoderSt
mPlaybackRate(1.0),
mAmpleAudioThreshold(detail::AMPLE_AUDIO_THRESHOLD),
mAudioCaptured(false),
mMinimizePreroll(aDecoder->GetMinimizePreroll()),
mSentFirstFrameLoadedEvent(false),
mVideoDecodeSuspended(false),
mVideoDecodeSuspendTimer(mTaskQueue),
mOutputStreamManager(new OutputStreamManager()),
- mResource(aDecoder->GetResource()),
mVideoDecodeMode(VideoDecodeMode::Normal),
mIsMSE(aDecoder->IsMSE()),
INIT_MIRROR(mBuffered, TimeIntervals()),
INIT_MIRROR(mPlayState, MediaDecoder::PLAY_STATE_LOADING),
INIT_MIRROR(mVolume, 1.0),
INIT_MIRROR(mPreservesPitch, true),
INIT_MIRROR(mLooping, false),
INIT_MIRROR(mSameOriginMedia, false),
@@ -3449,20 +3447,18 @@ void
MediaDecoderStateMachine::FinishDecodeFirstFrame()
{
MOZ_ASSERT(OnTaskQueue());
MOZ_ASSERT(!mSentFirstFrameLoadedEvent);
LOG("FinishDecodeFirstFrame");
mMediaSink->Redraw(Info().mVideo);
- LOG("Media duration %" PRId64 ", "
- "transportSeekable=%d, mediaSeekable=%d",
- Duration().ToMicroseconds(), mResource->IsTransportSeekable(),
- mMediaSeekable);
+ LOG("Media duration %" PRId64 ", mediaSeekable=%d",
+ Duration().ToMicroseconds(), mMediaSeekable);
// Get potentially updated metadata
mReader->ReadUpdatedMetadata(mInfo.ptr());
EnqueueFirstFrameLoadedEvent();
}
RefPtr<ShutdownPromise>
--- a/dom/media/MediaDecoderStateMachine.h
+++ b/dom/media/MediaDecoderStateMachine.h
@@ -225,22 +225,16 @@ public:
nsCOMPtr<nsIRunnable> r = NS_NewRunnableFunction(
"MediaDecoderStateMachine::DispatchIsLiveStream",
[self, aIsLiveStream]() {
self->mIsLiveStream = aIsLiveStream;
});
OwnerThread()->DispatchStateChange(r.forget());
}
- // Drop reference to mResource. Only called during shutdown dance.
- void BreakCycles() {
- MOZ_ASSERT(NS_IsMainThread());
- mResource = nullptr;
- }
-
TimedMetadataEventSource& TimedMetadataEvent() {
return mMetadataManager.TimedMetadataEvent();
}
MediaEventSource<void>& OnMediaNotSeekable() const;
MediaEventSourceExc<UniquePtr<MediaInfo>,
UniquePtr<MetadataTags>,
@@ -641,19 +635,16 @@ private:
bool mMediaSeekableOnlyInBufferedRanges = false;
// Track enabling video decode suspension via timer
DelayedScheduler mVideoDecodeSuspendTimer;
// Data about MediaStreams that are being fed by the decoder.
const RefPtr<OutputStreamManager> mOutputStreamManager;
- // Media data resource from the decoder.
- RefPtr<MediaResource> mResource;
-
// Track the current video decode mode.
VideoDecodeMode mVideoDecodeMode;
// Track the complete & error for audio/video separately
MozPromiseRequestHolder<GenericPromise> mMediaSinkAudioPromise;
MozPromiseRequestHolder<GenericPromise> mMediaSinkVideoPromise;
MediaEventListener mAudioQueueListener;