From 838ba119761fb28ee72fb348f532906455214685 Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Thu, 8 Oct 2015 20:18:14 -0700 Subject: [PATCH] Only request traversals if status bar visibility changed on reevaluation Reduces the amount of churn in the system. Change-Id: Ic1e93f1ed511fe95c551c08a06e239f0e5de93a0 --- .../com/android/server/wm/WindowManagerService.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 6239d2e4aafbf..0170bb9655408 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -9140,9 +9140,9 @@ public class WindowManagerService extends IWindowManager.Stub } // TOOD(multidisplay): StatusBar on multiple screens? - void updateStatusBarVisibilityLocked(int visibility) { + boolean updateStatusBarVisibilityLocked(int visibility) { if (mLastDispatchedSystemUiVisibility == visibility) { - return; + return false; } final int globalDiff = (visibility ^ mLastDispatchedSystemUiVisibility) // We are only interested in differences of one of the @@ -9173,14 +9173,16 @@ public class WindowManagerService extends IWindowManager.Stub // so sorry } } + return true; } @Override public void reevaluateStatusBarVisibility() { synchronized (mWindowMap) { int visibility = mPolicy.adjustSystemUiVisibilityLw(mLastStatusBarVisibility); - updateStatusBarVisibilityLocked(visibility); - mWindowPlacerLocked.requestTraversal(); + if (updateStatusBarVisibilityLocked(visibility)) { + mWindowPlacerLocked.requestTraversal(); + } } }