Bug 1454430 - Ensure the ClearTree task runs before we shut down webrender. r=nical

MozReview-Commit-ID: BCc0zuZvktj

--HG--
extra : rebase_source : e35e41a33943a7e2d5eae869ace62802040a0d7a
This commit is contained in:
Kartikaya Gupta 2018-04-16 14:21:04 -04:00
parent 6d9521886f
commit f245e247b3

View File

@ -450,6 +450,18 @@ CompositorBridgeParent::StopAndClearResources()
mPaused = true;
// We need to clear the APZ tree before we destroy the WebRender API below,
// because in the case of async scene building that will shut down the updater
// thread and we need to run the task before that happens.
MOZ_ASSERT((mApzSampler != nullptr) == (mApzcTreeManager != nullptr));
MOZ_ASSERT((mApzUpdater != nullptr) == (mApzcTreeManager != nullptr));
if (mApzUpdater) {
mApzSampler = nullptr;
mApzUpdater->ClearTree(mRootLayerTreeID);
mApzUpdater = nullptr;
mApzcTreeManager = nullptr;
}
// Ensure that the layer manager is destroyed before CompositorBridgeChild.
if (mLayerManager) {
MonitorAutoLock lock(*sIndirectLayerTreesLock);
@ -639,15 +651,6 @@ CompositorBridgeParent::ActorDestroy(ActorDestroyReason why)
mCompositionManager = nullptr;
MOZ_ASSERT((mApzSampler != nullptr) == (mApzcTreeManager != nullptr));
MOZ_ASSERT((mApzUpdater != nullptr) == (mApzcTreeManager != nullptr));
if (mApzUpdater) {
mApzSampler = nullptr;
mApzUpdater->ClearTree(mRootLayerTreeID);
mApzUpdater = nullptr;
mApzcTreeManager = nullptr;
}
{ // scope lock
MonitorAutoLock lock(*sIndirectLayerTreesLock);
sIndirectLayerTrees.erase(mRootLayerTreeID);