Bug 1000525 - Defer Fence release until IPC delivery complete r=nical
This commit is contained in:
@@ -53,6 +53,14 @@ ClientLayerManager::ClientLayerManager(nsIWidget* aWidget)
|
||||
|
||||
ClientLayerManager::~ClientLayerManager()
|
||||
{
|
||||
ClearCachedResources();
|
||||
// Stop receiveing AsyncParentMessage at Forwarder.
|
||||
// After the call, the message is directly handled by LayerTransactionChild.
|
||||
// Basically this function should be called in ShadowLayerForwarder's
|
||||
// destructor. But when the destructor is triggered by
|
||||
// CompositorChild::Destroy(), the destructor can not handle it correctly.
|
||||
// See Bug 1000525.
|
||||
mForwarder->StopReceiveAsyncParentMessge();
|
||||
mRoot = nullptr;
|
||||
|
||||
MOZ_COUNT_DTOR(ClientLayerManager);
|
||||
@@ -266,9 +274,7 @@ ClientLayerManager::GetRemoteRenderer()
|
||||
void
|
||||
ClientLayerManager::Composite()
|
||||
{
|
||||
if (LayerTransactionChild* manager = mForwarder->GetShadowManager()) {
|
||||
manager->SendForceComposite();
|
||||
}
|
||||
mForwarder->Composite();
|
||||
}
|
||||
|
||||
void
|
||||
@@ -428,6 +434,7 @@ ClientLayerManager::ForwardTransaction(bool aScheduleComposite)
|
||||
}
|
||||
|
||||
mForwarder->RemoveTexturesIfNecessary();
|
||||
mForwarder->SendPendingAsyncMessge();
|
||||
mPhase = PHASE_NONE;
|
||||
|
||||
// this may result in Layers being deleted, which results in
|
||||
@@ -498,9 +505,7 @@ void
|
||||
ClientLayerManager::ClearCachedResources(Layer* aSubtree)
|
||||
{
|
||||
MOZ_ASSERT(!HasShadowManager() || !aSubtree);
|
||||
if (LayerTransactionChild* manager = mForwarder->GetShadowManager()) {
|
||||
manager->SendClearCachedResources();
|
||||
}
|
||||
mForwarder->ClearCachedResources();
|
||||
if (aSubtree) {
|
||||
ClearLayer(aSubtree);
|
||||
} else if (mRoot) {
|
||||
|
||||
Reference in New Issue
Block a user