From c79749655a8e9b424de0c2448ed35dafe6ee123b Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Thu, 22 Feb 2018 18:06:16 -0800 Subject: [PATCH] updateNonSystemOverlayWindowsVisibilityIfNeeded on relayoutWindow If PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS changed on relayoutWindow() then updateNonSystemOverlayWindowsVisibilityIfNeeded Change-Id: Ifc8b77d70e3c25acf28eab86786ce5929e2ba3f8 Fixes: 73727992 Test: manual steps from bug --- .../java/com/android/server/wm/WindowManagerService.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 26ac79e97182e..f275e6a7b8cb3 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -50,6 +50,7 @@ import static android.view.WindowManager.LayoutParams.INPUT_FEATURE_NO_INPUT_CHA import static android.view.WindowManager.LayoutParams.LAST_APPLICATION_WINDOW; import static android.view.WindowManager.LayoutParams.LAST_SUB_WINDOW; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_COMPATIBLE_WINDOW; +import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; @@ -1913,6 +1914,11 @@ public class WindowManagerService extends IWindowManager.Stub // No move or resize, but the controller checks for title changes as well mAccessibilityController.onSomeWindowResizedOrMovedLocked(); } + + if ((flagChanges & PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS) != 0) { + updateNonSystemOverlayWindowsVisibilityIfNeeded( + win, win.mWinAnimator.getShown()); + } } if (DEBUG_LAYOUT) Slog.v(TAG_WM, "Relayout " + win + ": viewVisibility=" + viewVisibility @@ -7397,7 +7403,8 @@ public class WindowManagerService extends IWindowManager.Stub } void updateNonSystemOverlayWindowsVisibilityIfNeeded(WindowState win, boolean surfaceShown) { - if (!win.hideNonSystemOverlayWindowsWhenVisible()) { + if (!win.hideNonSystemOverlayWindowsWhenVisible() + && !mHidingNonSystemOverlayWindows.contains(win)) { return; } final boolean systemAlertWindowsHidden = !mHidingNonSystemOverlayWindows.isEmpty();