☠☠ backed out by 3fee518242f6 ☠ ☠ | |
author | Michael Layzell <michael@thelayzells.com> |
Fri, 17 Feb 2017 14:44:51 -0500 | |
changeset 344620 | 419ada2f9e81fdabcd3423381990231bcfb61c0c |
parent 344619 | 19239f566a9332087f637930f14ee7c2bed086e6 |
child 344621 | 4134c04c80285c24471ad44f5197af40c8c9eeec |
push id | 31414 |
push user | cbook@mozilla.com |
push date | Fri, 24 Feb 2017 10:47:41 +0000 |
treeherder | mozilla-central@be661bae6cb9 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jwwang |
bugs | 1336510 |
milestone | 54.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
dom/media/MediaDecoderStateMachine.cpp | file | annotate | diff | comparison | revisions | |
dom/media/MediaDecoderStateMachine.h | file | annotate | diff | comparison | revisions |
--- a/dom/media/MediaDecoderStateMachine.cpp +++ b/dom/media/MediaDecoderStateMachine.cpp @@ -2800,49 +2800,52 @@ MediaDecoderStateMachine::IsVideoDecodin } bool MediaDecoderStateMachine::IsPlaying() const { MOZ_ASSERT(OnTaskQueue()); return mMediaSink->IsPlaying(); } +void MediaDecoderStateMachine::SetMediaNotSeekable() +{ + mMediaSeekable = false; +} + nsresult MediaDecoderStateMachine::Init(MediaDecoder* aDecoder) { MOZ_ASSERT(NS_IsMainThread()); // Dispatch initialization that needs to happen on that task queue. nsCOMPtr<nsIRunnable> r = NewRunnableMethod<RefPtr<MediaDecoder>>( this, &MediaDecoderStateMachine::InitializationTask, aDecoder); mTaskQueue->Dispatch(r.forget()); mAudioQueueListener = AudioQueue().PopEvent().Connect( mTaskQueue, this, &MediaDecoderStateMachine::OnAudioPopped); mVideoQueueListener = VideoQueue().PopEvent().Connect( mTaskQueue, this, &MediaDecoderStateMachine::OnVideoPopped); mMetadataManager.Connect(mReader->TimedMetadataEvent(), OwnerThread()); - RefPtr<MediaDecoderStateMachine> self = this; mOnMediaNotSeekable = mReader->OnMediaNotSeekable().Connect( - OwnerThread(), [self] () { - self->mMediaSeekable = false; - }); + OwnerThread(), this, &MediaDecoderStateMachine::SetMediaNotSeekable); mMediaSink = CreateMediaSink(mAudioCaptured); aDecoder->RequestCDMProxy()->Then( OwnerThread(), __func__, this, &MediaDecoderStateMachine::OnCDMProxyReady, &MediaDecoderStateMachine::OnCDMProxyNotReady) ->Track(mCDMProxyPromise); nsresult rv = mReader->Init(); NS_ENSURE_SUCCESS(rv, rv); + RefPtr<MediaDecoderStateMachine> self = this; OwnerThread()->Dispatch(NS_NewRunnableFunction([self] () { MOZ_ASSERT(!self->mStateObj); auto s = new DecodeMetadataState(self); self->mStateObj.reset(s); s->Enter(); })); return NS_OK;
--- a/dom/media/MediaDecoderStateMachine.h +++ b/dom/media/MediaDecoderStateMachine.h @@ -292,16 +292,19 @@ private: // True if shutdown process has begun. bool IsShutdown() const; // Returns true if we're currently playing. The decoder monitor must // be held. bool IsPlaying() const; + // Sets mMediaSeekable to false. + void SetMediaNotSeekable(); + // Resets all states related to decoding and aborts all pending requests // to the decoders. void ResetDecode(TrackSet aTracks = TrackSet(TrackInfo::kAudioTrack, TrackInfo::kVideoTrack)); protected: virtual ~MediaDecoderStateMachine();