void GMPContentParent::RemoveCloseBlocker() { MOZ_ASSERT(GMPEventTarget()->IsOnCurrentThread()); --mCloseBlockerCount; CloseIfUnused(); }
void GMPParent::CloseActive(bool aDieWhenUnloaded) { LOGD(("%s::%s: %p state %d", __CLASS__, __FUNCTION__, this, mState)); if (aDieWhenUnloaded) { mDeleteProcessOnlyOnUnload = true; // don't allow this to go back... } if (mState == GMPStateLoaded) { mState = GMPStateUnloading; } // Invalidate and remove any remaining API objects. for (uint32_t i = mVideoDecoders.Length(); i > 0; i--) { mVideoDecoders[i - 1]->Shutdown(); } // Invalidate and remove any remaining API objects. for (uint32_t i = mVideoEncoders.Length(); i > 0; i--) { mVideoEncoders[i - 1]->Shutdown(); } // Invalidate and remove any remaining API objects. for (uint32_t i = mDecryptors.Length(); i > 0; i--) { mDecryptors[i - 1]->Shutdown(); } // Note: the shutdown of the codecs is async! don't kill // the plugin-container until they're all safely shut down via // CloseIfUnused(); CloseIfUnused(); }
void GMPContentParent::ChromiumCDMDestroyed(ChromiumCDMParent* aDecoder) { MOZ_ASSERT(GMPEventTarget()->IsOnCurrentThread()); MOZ_ALWAYS_TRUE(mChromiumCDMs.RemoveElement(aDecoder)); CloseIfUnused(); }
void GMPContentParent::ChromiumCDMDestroyed(ChromiumCDMParent* aCDM) { GMP_LOG("GMPContentParent::ChromiumCDMDestroyed(this=%p, aCDM=%p)", this, aCDM); MOZ_ASSERT(GMPEventTarget()->IsOnCurrentThread()); MOZ_ALWAYS_TRUE(mChromiumCDMs.RemoveElement(aCDM)); CloseIfUnused(); }
void GMPContentParent::AudioDecoderDestroyed(GMPAudioDecoderParent* aDecoder) { MOZ_ASSERT(GMPThread() == NS_GetCurrentThread()); MOZ_ALWAYS_TRUE(mAudioDecoders.RemoveElement(aDecoder)); CloseIfUnused(); }
void GMPContentParent::DecryptorDestroyed(GMPDecryptorParent* aSession) { MOZ_ASSERT(GMPThread() == NS_GetCurrentThread()); MOZ_ALWAYS_TRUE(mDecryptors.RemoveElement(aSession)); CloseIfUnused(); }
void GMPContentParent::VideoEncoderDestroyed(GMPVideoEncoderParent* aEncoder) { MOZ_ASSERT(GMPEventTarget()->IsOnCurrentThread()); // If the constructor fails, we'll get called before it's added Unused << NS_WARN_IF(!mVideoEncoders.RemoveElement(aEncoder)); CloseIfUnused(); }
void GMPContentParent::RemoveCloseBlocker() { MOZ_ASSERT(GMPEventTarget()->IsOnCurrentThread()); --mCloseBlockerCount; GMP_LOG( "GMPContentParent::RemoveCloseBlocker(this=%p) " "mCloseBlockerCount=%" PRIu32, this, mCloseBlockerCount); CloseIfUnused(); }
void GMPParent::CloseActive() { if (mState == GMPStateLoaded) { mState = GMPStateUnloading; } // Invalidate and remove any remaining API objects. for (uint32_t i = mVideoDecoders.Length(); i > 0; i--) { mVideoDecoders[i - 1]->DecodingComplete(); } // Invalidate and remove any remaining API objects. for (uint32_t i = mVideoEncoders.Length(); i > 0; i--) { mVideoEncoders[i - 1]->EncodingComplete(); } // Note: the shutdown of the codecs is async! don't kill // the plugin-container until they're all safely shut down via // CloseIfUnused(); CloseIfUnused(); }