From 0a082e722022e33643b0476e4d5e5b24e5809193 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Fri, 31 Jan 2020 18:32:13 +0100 Subject: [PATCH] Fix unnecessary onApplyWindowInsets ...such that we don't trigger another apply immediately after the first frame. Test: Launch calc, observe only one onApplyInsets Bug: 148604688 Change-Id: I1b8c1735ca0b93869eb3bf8bd1fc078e6474e653 --- core/java/android/view/ViewRootImpl.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 44ab596b93ee9..81746a064fc48 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -2206,8 +2206,9 @@ public final class ViewRootImpl implements ViewParent, return insets; } - void dispatchApplyInsets(View host) { + public void dispatchApplyInsets(View host) { Trace.traceBegin(Trace.TRACE_TAG_VIEW, "dispatchApplyInsets"); + mApplyInsetsRequested = false; WindowInsets insets = getWindowInsets(true /* forceConstruct */); final boolean dispatchCutout = (mWindowAttributes.layoutInDisplayCutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS); @@ -2444,7 +2445,6 @@ public final class ViewRootImpl implements ViewParent, } if (mApplyInsetsRequested) { - mApplyInsetsRequested = false; updateVisibleInsets(); dispatchApplyInsets(host); if (mLayoutRequested) { @@ -2621,7 +2621,6 @@ public final class ViewRootImpl implements ViewParent, if (contentInsetsChanged || mLastSystemUiVisibility != mAttachInfo.mSystemUiVisibility || mApplyInsetsRequested) { mLastSystemUiVisibility = mAttachInfo.mSystemUiVisibility; - mApplyInsetsRequested = false; dispatchApplyInsets(host); // We applied insets so force contentInsetsChanged to ensure the // hierarchy is measured below.