Bug 1369298 - Prevent AndrodDynamicToolbarAnimator from getting Initialized if compositor is being shutdown r=botond draft
authorRandall Barker <rbarker@mozilla.com>
Thu, 01 Jun 2017 13:32:11 -0700
changeset 587981 9d9e927be10b747dc14f94ef9f2eac4e4325f88c
parent 587980 6ff0dd2d87d1899dfea7abdf5f0dde9b7f28aa45
child 631426 fce67b09485de75de478090f81897caa54565bdb
push id61872
push userbmo:rbarker@mozilla.com
push dateFri, 02 Jun 2017 00:05:27 +0000
reviewersbotond
bugs1369298
milestone55.0a1
Bug 1369298 - Prevent AndrodDynamicToolbarAnimator from getting Initialized if compositor is being shutdown r=botond MozReview-Commit-ID: 5N7bKyaXzPH
gfx/layers/ipc/UiCompositorControllerParent.cpp
--- a/gfx/layers/ipc/UiCompositorControllerParent.cpp
+++ b/gfx/layers/ipc/UiCompositorControllerParent.cpp
@@ -260,17 +260,22 @@ UiCompositorControllerParent::Initialize
 {
   MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread());
   AddRef();
   LayerTreeState* state = CompositorBridgeParent::GetIndirectShadowTree(mRootLayerTreeId);
   MOZ_ASSERT(state);
   MOZ_ASSERT(state->mParent);
   state->mUiControllerParent = this;
 #if defined(MOZ_WIDGET_ANDROID)
-  state->mParent->GetAPZCTreeManager()->InitializeDynamicToolbarAnimator(mRootLayerTreeId);
+  RefPtr<APZCTreeManager> manager = state->mParent->GetAPZCTreeManager();
+  // Since this is called from the UI thread. It is possible the compositor has already
+  // started shutting down and the APZCTreeManager could be a nullptr.
+  if (manager) {
+    manager->InitializeDynamicToolbarAnimator(mRootLayerTreeId);
+  }
 #endif
 }
 
 void
 UiCompositorControllerParent::Open(Endpoint<PUiCompositorControllerParent>&& aEndpoint)
 {
   MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread());
   if (!aEndpoint.Bind(this)) {