Bug 1447335 - random guess at a fix r=kats draft
authorJames Willcox <snorp@snorp.net>
Tue, 20 Mar 2018 12:49:47 -0500
changeset 770089 c9e3ed517760e84e5dabf38d571135e7ca8b2fd6
parent 770088 6ee478fbb1714f91c6443bb232b6034d4beecbc8
push id103311
push userbmo:snorp@snorp.net
push dateTue, 20 Mar 2018 18:09:51 +0000
reviewerskats
bugs1447335
milestone61.0a1
Bug 1447335 - random guess at a fix r=kats MozReview-Commit-ID: 38Yy4266CTO
gfx/layers/ipc/CompositorBridgeParent.cpp
--- a/gfx/layers/ipc/CompositorBridgeParent.cpp
+++ b/gfx/layers/ipc/CompositorBridgeParent.cpp
@@ -1680,27 +1680,34 @@ CompositorBridgeParent::RecvMapAndNotify
 
 mozilla::ipc::IPCResult
 CompositorBridgeParent::RecvAdoptChild(const uint64_t& child)
 {
   RefPtr<APZSampler> oldApzSampler;
   APZCTreeManagerParent* parent;
   {
     MonitorAutoLock lock(*sIndirectLayerTreesLock);
-    // We currently don't support adopting children from one compositor to
-    // another if the two compositors don't have the same options.
-    MOZ_ASSERT(sIndirectLayerTrees[child].mParent->mOptions == mOptions);
-    oldApzSampler = sIndirectLayerTrees[child].mParent->mApzSampler;
+
     NotifyChildCreated(child);
     if (sIndirectLayerTrees[child].mLayerTree) {
       sIndirectLayerTrees[child].mLayerTree->SetLayerManager(mLayerManager, GetAnimationStorage());
       // Trigger composition to handle a case that mLayerTree was not composited yet
       // by previous CompositorBridgeParent, since nsRefreshDriver might wait composition complete.
       ScheduleComposition();
     }
+
+    if (!sIndirectLayerTrees[child].mParent) {
+      return IPC_OK();
+    }
+
+    // We currently don't support adopting children from one compositor to
+    // another if the two compositors don't have the same options.
+    MOZ_ASSERT(sIndirectLayerTrees[child].mParent->mOptions == mOptions);
+    oldApzSampler = sIndirectLayerTrees[child].mParent->mApzSampler;
+
     if (mWrBridge && sIndirectLayerTrees[child].mWrBridge) {
       RefPtr<wr::WebRenderAPI> api = mWrBridge->GetWebRenderAPI();
       api = api->Clone();
       sIndirectLayerTrees[child].mWrBridge->UpdateWebRender(mWrBridge->CompositorScheduler(),
                                                             api,
                                                             mWrBridge->AsyncImageManager(),
                                                             GetAnimationStorage());
       // Pretend we composited, since parent CompositorBridgeParent was replaced.