// Note: Consider keeping ActorDestroy sync'd up when making changes here. nsresult GMPVideoDecoderParent::Shutdown() { LOGD(("GMPVideoDecoderParent[%p]::Shutdown()", this)); MOZ_ASSERT(!mPlugin || mPlugin->GMPThread() == NS_GetCurrentThread()); if (mShuttingDown) { return NS_OK; } mShuttingDown = true; // Ensure if we've received a shutdown while waiting for a ResetComplete // or DrainComplete notification, we'll unblock the caller before processing // the shutdown. UnblockResetAndDrain(); // Notify client we're gone! Won't occur after Close() if (mCallback) { mCallback->Terminated(); mCallback = nullptr; } mIsOpen = false; if (!mActorDestroyed) { Unused << SendDecodingComplete(); } return NS_OK; }
// Note: Consider keeping ActorDestroy sync'd up when making changes here. nsresult GMPVideoDecoderParent::DecodingComplete() { if (!mCanSendMessages) { NS_WARNING("Trying to use an invalid GMP video decoder!"); return NS_ERROR_FAILURE; } MOZ_ASSERT(mPlugin->GMPThread() == NS_GetCurrentThread()); mCanSendMessages = false; mCallback = nullptr; mVideoHost.DoneWithAPI(); unused << SendDecodingComplete(); return NS_OK; }
// Note: Consider keeping ActorDestroy sync'd up when making changes here. nsresult GMPVideoDecoderParent::Shutdown() { LOGD(("%s: %p", __FUNCTION__, this)); MOZ_ASSERT(mPlugin->GMPThread() == NS_GetCurrentThread()); // Notify client we're gone! Won't occur after Close() if (mCallback) { mCallback->Terminated(); mCallback = nullptr; } mVideoHost.DoneWithAPI(); if (mIsOpen) { // Don't send DecodingComplete if we died mIsOpen = false; unused << SendDecodingComplete(); } return NS_OK; }
// Note: Consider keeping ActorDestroy sync'd up when making changes here. nsresult GMPAudioDecoderParent::Shutdown() { LOGD(("%s: %p", __FUNCTION__, this)); MOZ_ASSERT(!mPlugin || mPlugin->GMPThread() == NS_GetCurrentThread()); if (mShuttingDown) { return NS_OK; } mShuttingDown = true; // Notify client we're gone! Won't occur after Close() if (mCallback) { mCallback->Terminated(); mCallback = nullptr; } mIsOpen = false; unused << SendDecodingComplete(); return NS_OK; }