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(); }
void ShadowLayersChild::Destroy() { NS_ABORT_IF_FALSE(0 == ManagedPLayerChild().Length(), "layers should have been cleaned up by now"); PLayersChild::Send__delete__(this); // WARNING: |this| has gone to the great heap in the sky }
void LayerTransactionChild::Destroy() { if (!IPCOpen() || mDestroyed) { 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; NS_ABORT_IF_FALSE(0 == ManagedPLayerChild().Length(), "layers should have been cleaned up by now"); PLayerTransactionChild::Send__delete__(this); }
void LayerTransactionChild::Destroy() { if (!IPCOpen()) { return; } // mDestroyed is used to prevent calling Send__delete__() twice. // When this function is called from CompositorBridgeChild::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"); SendShutdown(); }