void MediaOmxReader::Shutdown() { ReleaseMediaResources(); nsCOMPtr<nsIRunnable> event = NS_NewRunnableMethod(this, &MediaOmxReader::ReleaseDecoder); NS_DispatchToMainThread(event); }
nsRefPtr<ShutdownPromise> MediaDecoderReader::Shutdown() { MOZ_ASSERT(OnTaskQueue()); mShutdown = true; mBaseAudioPromise.RejectIfExists(END_OF_STREAM, __func__); mBaseVideoPromise.RejectIfExists(END_OF_STREAM, __func__); ReleaseMediaResources(); nsRefPtr<ShutdownPromise> p; // Spin down the task queue if necessary. We wait until BreakCycles to null // out mTaskQueue, since otherwise any remaining tasks could crash when they // invoke GetTaskQueue()->IsCurrentThreadIn(). if (mTaskQueue && !mTaskQueueIsBorrowed) { // If we own our task queue, shutdown ends when the task queue is done. p = mTaskQueue->BeginShutdown(); } else { // If we don't own our task queue, we resolve immediately (though // asynchronously). p = ShutdownPromise::CreateAndResolve(true, __func__); } mDecoder = nullptr; return p; }
RefPtr<ShutdownPromise> MediaDecoderReader::Shutdown() { MOZ_ASSERT(OnTaskQueue()); mShutdown = true; mBaseAudioPromise.RejectIfExists(END_OF_STREAM, __func__); mBaseVideoPromise.RejectIfExists(END_OF_STREAM, __func__); mThrottledNotify.DisconnectIfExists(); ReleaseMediaResources(); mDuration.DisconnectIfConnected(); mBuffered.DisconnectAll(); // Shut down the watch manager before shutting down our task queue. mWatchManager.Shutdown(); RefPtr<ShutdownPromise> p; mTimer = nullptr; mDecoder = nullptr; return mTaskQueue->BeginShutdown(); }
RefPtr<ShutdownPromise> MediaDecoderReader::Shutdown() { MOZ_ASSERT(OnTaskQueue()); mShutdown = true; mBaseAudioPromise.RejectIfExists(END_OF_STREAM, __func__); mBaseVideoPromise.RejectIfExists(END_OF_STREAM, __func__); mDataArrivedListener.DisconnectIfExists(); ReleaseMediaResources(); mDuration.DisconnectIfConnected(); mBuffered.DisconnectAll(); mIsSuspended.DisconnectAll(); // Shut down the watch manager before shutting down our task queue. mWatchManager.Shutdown(); RefPtr<ShutdownPromise> p; mDecoder = nullptr; ReaderQueue::Instance().Remove(this); return mTaskQueue->BeginShutdown(); }
void MediaDecoderReader::Shutdown() { MOZ_ASSERT(OnDecodeThread()); mShutdown = true; ReleaseMediaResources(); if (mTaskQueue && !mTaskQueueIsBorrowed) { // We may be running in the task queue ourselves, so we don't block this // thread on task queue draining, since that would deadlock. mTaskQueue->BeginShutdown(); } mTaskQueue = nullptr; }
nsRefPtr<ShutdownPromise> MediaDecoderReader::Shutdown() { MOZ_ASSERT(OnTaskQueue()); mShutdown = true; mBaseAudioPromise.RejectIfExists(END_OF_STREAM, __func__); mBaseVideoPromise.RejectIfExists(END_OF_STREAM, __func__); mThrottledNotify.DisconnectIfExists(); ReleaseMediaResources(); mDuration.DisconnectIfConnected(); mBuffered.DisconnectAll(); // Shut down the watch manager before shutting down our task queue. mWatchManager.Shutdown(); nsRefPtr<ShutdownPromise> p; // Spin down the task queue if necessary. We wait until BreakCycles to null // out mTaskQueue, since otherwise any remaining tasks could crash when they // invoke OnTaskQueue(). if (mTaskQueue && !mTaskQueueIsBorrowed) { // If we own our task queue, shutdown ends when the task queue is done. p = mTaskQueue->BeginShutdown(); } else { // If we don't own our task queue, we resolve immediately (though // asynchronously). p = ShutdownPromise::CreateAndResolve(true, __func__); } mTimer = nullptr; mDecoder = nullptr; return p; }
MediaOmxReader::~MediaOmxReader() { ReleaseMediaResources(); ReleaseDecoder(); mOmxDecoder.clear(); }
void WMFMediaDataDecoder::ReleaseDecoder() { ReleaseMediaResources(); }
void MediaDecoderReader::Shutdown() { ReleaseMediaResources(); }