Bug 1443301 - Update dynamic toolbar init codepath to not need an APZCTreeManager. r?botond
MozReview-Commit-ID: BthTS5k1PDW
--- a/gfx/layers/apz/src/APZCTreeManager.cpp
+++ b/gfx/layers/apz/src/APZCTreeManager.cpp
@@ -2985,23 +2985,16 @@ APZCTreeManager::GetAPZTestData(uint64_t
if (it == mTestData.end()) {
return false;
}
*aOutData = *(it->second);
return true;
}
#if defined(MOZ_WIDGET_ANDROID)
-void
-APZCTreeManager::InitializeDynamicToolbarAnimator(const int64_t& aRootLayerTreeId)
-{
- MOZ_ASSERT(mToolbarAnimator);
- mToolbarAnimator->Initialize(aRootLayerTreeId);
-}
-
AndroidDynamicToolbarAnimator*
APZCTreeManager::GetAndroidDynamicToolbarAnimator()
{
return mToolbarAnimator;
}
#endif // defined(MOZ_WIDGET_ANDROID)
} // namespace layers
--- a/gfx/layers/apz/src/APZCTreeManager.h
+++ b/gfx/layers/apz/src/APZCTreeManager.h
@@ -712,17 +712,16 @@ private:
// protected by the mTestDataLock.
std::unordered_map<uint64_t, UniquePtr<APZTestData>> mTestData;
mutable mozilla::Mutex mTestDataLock;
static float sDPI;
#if defined(MOZ_WIDGET_ANDROID)
public:
- void InitializeDynamicToolbarAnimator(const int64_t& aRootLayerTreeId);
AndroidDynamicToolbarAnimator* GetAndroidDynamicToolbarAnimator();
private:
RefPtr<AndroidDynamicToolbarAnimator> mToolbarAnimator;
#endif // defined(MOZ_WIDGET_ANDROID)
};
} // namespace layers
--- a/gfx/layers/ipc/CompositorBridgeParent.cpp
+++ b/gfx/layers/ipc/CompositorBridgeParent.cpp
@@ -1188,16 +1188,22 @@ CompositorBridgeParent::DeallocPAPZParen
}
#if defined(MOZ_WIDGET_ANDROID)
RefPtr<APZCTreeManager>
CompositorBridgeParent::GetAPZCTreeManager()
{
return mApzcTreeManager;
}
+
+AndroidDynamicToolbarAnimator*
+CompositorBridgeParent::GetAndroidDynamicToolbarAnimator()
+{
+ return mApzcTreeManager ? mApzcTreeManager->GetAndroidDynamicToolbarAnimator() : nullptr;
+}
#endif
RefPtr<APZSampler>
CompositorBridgeParent::GetAPZSampler()
{
return mApzSampler;
}
--- a/gfx/layers/ipc/CompositorBridgeParent.h
+++ b/gfx/layers/ipc/CompositorBridgeParent.h
@@ -460,16 +460,17 @@ public:
const uint64_t& aLayersId,
LayerTreeState& aLayerTreeStateToUpdate);
PAPZParent* AllocPAPZParent(const uint64_t& aLayersId) override;
bool DeallocPAPZParent(PAPZParent* aActor) override;
#if defined(MOZ_WIDGET_ANDROID)
RefPtr<APZCTreeManager> GetAPZCTreeManager();
+ AndroidDynamicToolbarAnimator* GetAndroidDynamicToolbarAnimator();
#endif
RefPtr<APZSampler> GetAPZSampler();
CompositorOptions GetOptions() const {
return mOptions;
}
TimeDuration GetVsyncInterval() const {
--- a/gfx/layers/ipc/UiCompositorControllerParent.cpp
+++ b/gfx/layers/ipc/UiCompositorControllerParent.cpp
@@ -275,21 +275,21 @@ 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)
- 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);
+ AndroidDynamicToolbarAnimator* animator = state->mParent->GetAndroidDynamicToolbarAnimator();
+ // It is possible the compositor has already started shutting down and
+ // the AndroidDynamicToolbarAnimator could be a nullptr.
+ if (animator) {
+ animator->Initialize(mRootLayerTreeId);
}
#endif
}
void
UiCompositorControllerParent::Open(Endpoint<PUiCompositorControllerParent>&& aEndpoint)
{
MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread());