From 7c00210f0aaa7233eb59e102b11650a1a68b3044 Mon Sep 17 00:00:00 2001 From: wilsonshih Date: Wed, 5 Jul 2023 14:35:07 +0800 Subject: [PATCH] Keep starting window on top during remove. To align the behavior of WindowState#assignLayer even when removing. Bug: 268221678 Test: launch test app, verify starting window remain on top during fadeout animation. Change-Id: I8d4000dc02749f5ec9f456a6cce76ee8e56cb331 --- services/core/java/com/android/server/wm/WindowState.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 0d4c2d631b2ce..9f0c78f4b40d5 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2470,6 +2470,11 @@ class WindowState extends WindowContainer implements WindowManagerP if (allowExitAnimation && mWinAnimator.applyAnimationLocked(transit, false)) { ProtoLog.v(WM_DEBUG_ANIM, "Set animatingExit: reason=remove/applyAnimation win=%s", this); + if (startingWindow && mSurfaceAnimator.hasLeash()) { + // Keep starting window on top during fade-out animation. + getPendingTransaction().setLayer(mSurfaceAnimator.mLeash, + Integer.MAX_VALUE); + } mAnimatingExit = true; // mAnimatingExit affects canAffectSystemUiFlags(). Run layout such that