From 26952d748eaab23330c660fa0d7f5c0450dc1d06 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Fri, 1 Apr 2016 17:43:14 -0700 Subject: [PATCH] Do not call forceLayout if not needed If the relevant frames for the app don't actually change, there is no reason to call forceLayout and force a layout pass. Bug: 27864358 Change-Id: I2add8cc5791023937afc154e6e50bbf7efb35adb --- core/java/android/view/ViewRootImpl.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 420c4f272ff0f..5b2877faef021 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -3415,6 +3415,13 @@ public final class ViewRootImpl implements ViewParent, updateConfiguration(config, false); } + final boolean framesChanged = !mWinFrame.equals(args.arg1) + || !mPendingOverscanInsets.equals(args.arg5) + || !mPendingContentInsets.equals(args.arg2) + || !mPendingStableInsets.equals(args.arg6) + || !mPendingVisibleInsets.equals(args.arg3) + || !mPendingOutsets.equals(args.arg7); + mWinFrame.set((Rect) args.arg1); mPendingOverscanInsets.set((Rect) args.arg5); mPendingContentInsets.set((Rect) args.arg2); @@ -3431,7 +3438,7 @@ public final class ViewRootImpl implements ViewParent, mReportNextDraw = true; } - if (mView != null) { + if (mView != null && framesChanged) { forceLayout(mView); }