From bb6bd8ac180cdb8a87925fcf44ed8dfc99a85cbe Mon Sep 17 00:00:00 2001 From: chaviw Date: Tue, 28 May 2019 17:05:28 -0700 Subject: [PATCH] Clear VISIBLE_FOR_USER flag when isHiddenFromUser is true The current code was clearing the LEGACY_POLICY_VISIBILITY flag when isHiddenFromUser was returning true. This was causing issues since there was no path to add that flag when the Window was visible for that user. The correct way is to clear the VISIBLE_FOR_USER flag since that flag will get added again when the window is visible for that user. Fixes: 133235040 Test: Switch from one user to another and back. Launcher is visible. Change-Id: I5161dd83a7a0811a7e3a6ab2af439f352f967a6c --- services/core/java/com/android/server/wm/WindowState.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 5ef184adc52f3..de9d769a19d11 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1447,10 +1447,12 @@ class WindowState extends WindowContainer implements WindowManagerP void clearPolicyVisibilityFlag(int policyVisibilityFlag) { mPolicyVisibility &= ~policyVisibilityFlag; + mWmService.scheduleAnimationLocked(); } void setPolicyVisibilityFlag(int policyVisibilityFlag) { mPolicyVisibility |= policyVisibilityFlag; + mWmService.scheduleAnimationLocked(); } private boolean isLegacyPolicyVisibility() { @@ -3889,7 +3891,7 @@ class WindowState extends WindowContainer implements WindowManagerP boolean performShowLocked() { if (isHiddenFromUserLocked()) { if (DEBUG_VISIBILITY) Slog.w(TAG, "hiding " + this + ", belonging to " + mOwnerUid); - hideLw(false); + clearPolicyVisibilityFlag(VISIBLE_FOR_USER); return false; }