diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 2b9364c2f6923..f092172b24eaa 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -5115,6 +5115,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return mDeferHidingClient; } + boolean canAffectSystemUiFlags() { + return task != null && task.canAffectSystemUiFlags() && isVisible() + && !inPinnedWindowingMode(); + } + @Override boolean isVisible() { // If the activity isn't hidden then it is considered visible and there is no need to check diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index e429db924df58..69e84c76ac3b6 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2067,12 +2067,10 @@ class WindowState extends WindowContainer implements WindowManagerP final boolean exiting = mAnimatingExit || mDestroying; return shown && !exiting; } else { - final Task task = getTask(); - final boolean canFromTask = task != null && task.canAffectSystemUiFlags(); - return canFromTask && mActivityRecord.isVisible() - // Do not let snapshot window control the bar + return mActivityRecord.canAffectSystemUiFlags() + // Do not let snapshot window control the bar && (mAttrs.type != TYPE_APPLICATION_STARTING - || !(mStartingData instanceof SnapshotStartingData)); + || !(mStartingData instanceof SnapshotStartingData)); } }