From 015d8cd602efed6ba575398d3eebc6760b678073 Mon Sep 17 00:00:00 2001 From: Vishnu Nair Date: Mon, 18 Nov 2019 15:56:30 -0800 Subject: Reacquire wm lock when positing to handler Fixes: 144624999 Test: go/wm-smoke Change-Id: I1c7b485952cd7db61587d172367aa37f83ff925d --- services/core/java/com/android/server/wm/DisplayPolicy.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index f8c1ad951fc3..6cfc6e6625e1 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -3122,12 +3122,13 @@ public class DisplayPolicy { : new AppearanceRegion[]{ new AppearanceRegion(fullscreenAppearance, fullscreenStackBounds)}; final boolean isNavbarColorManagedByIme = result.second; + String cause = win.toString(); mHandler.post(() -> { StatusBarManagerInternal statusBar = getStatusBarManagerInternal(); if (statusBar != null) { final int displayId = getDisplayId(); statusBar.setDisableFlags(displayId, visibility & StatusBarManager.DISABLE_MASK, - win.toString()); + cause); if (transientState.first.length > 0) { statusBar.showTransient(displayId, transientState.first); } @@ -3139,8 +3140,10 @@ public class DisplayPolicy { statusBar.topAppWindowChanged(displayId, isFullscreen, isImmersive); // TODO(b/118118435): Remove this after removing system UI visibilities. - mDisplayContent.statusBarVisibilityChanged( - visibility & ~(View.STATUS_BAR_UNHIDE | View.NAVIGATION_BAR_UNHIDE)); + synchronized (mLock) { + mDisplayContent.statusBarVisibilityChanged( + visibility & ~(View.STATUS_BAR_UNHIDE | View.NAVIGATION_BAR_UNHIDE)); + } } }); return diff; -- cgit v1.2.3-59-g8ed1b