void LayerTransactionChild::Destroy() { if (!IPCOpen()) { return; } // mDestroyed is used to prevent calling Send__delete__() twice. // When this function is called from CompositorChild::Destroy(), // under Send__delete__() call, this function is called from // ShadowLayerForwarder's destructor. // When it happens, IPCOpen() is still true. // See bug 1004191. mDestroyed = true; MOZ_ASSERT(0 == ManagedPLayerChild().Length(), "layers should have been cleaned up by now"); for (size_t i = 0; i < ManagedPTextureChild().Length(); ++i) { TextureClient* texture = TextureClient::AsTextureClient(ManagedPTextureChild()[i]); if (texture) { texture->ForceRemove(); } } SendShutdown(); }
void LayerTransactionChild::Destroy() { if (!IPCOpen()) { return; } // mDestroyed is used to prevent calling Send__delete__() twice. // When this function is called from CompositorChild::Destroy(), // under Send__delete__() call, this function is called from // ShadowLayerForwarder's destructor. // When it happens, IPCOpen() is still true. // See bug 1004191. mDestroyed = true; MOZ_ASSERT(0 == ManagedPLayerChild().Count(), "layers should have been cleaned up by now"); const ManagedContainer<PTextureChild>& textures = ManagedPTextureChild(); for (auto iter = textures.ConstIter(); !iter.Done(); iter.Next()) { TextureClient* texture = TextureClient::AsTextureClient(iter.Get()->GetKey()); if (texture) { texture->Destroy(); } } SendShutdown(); }