Merge "Don't assume exiting non-app windows are animating in transition" into tm-qpr-dev

This commit is contained in:
Evan Rosky
2022-09-21 00:15:05 +00:00
committed by Android (Google) Code Review

View File

@@ -124,7 +124,10 @@ import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_
import static com.android.server.wm.RootWindowContainer.MATCH_ATTACHED_TASK_OR_RECENT_TASKS;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_ALL;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMATION;
import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN;
import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS;
import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DISPLAY;
@@ -2633,10 +2636,22 @@ public class WindowManagerService extends IWindowManager.Stub
if (win.isWinVisibleLw() && win.mDisplayContent.okToAnimate()) {
String reason = null;
if (winAnimator.applyAnimationLocked(transit, false)) {
// This is a WMCore-driven window animation.
reason = "applyAnimation";
focusMayChange = true;
win.mAnimatingExit = true;
} else if (win.isExitAnimationRunningSelfOrParent()) {
} else if (
// This is already animating via a WMCore-driven window animation
win.isSelfAnimating(0 /* flags */, ANIMATION_TYPE_WINDOW_ANIMATION)
// Or already animating as part of a legacy app-transition
|| win.isAnimating(PARENTS | TRANSITION,
ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_RECENTS)
// Or already animating as part of a shell-transition.
|| (win.inTransition()
// Filter out non-app windows since transitions don't animate those
// (but may still "wait" on them for readiness)
&& (win.mActivityRecord != null || win.mIsWallpaper))) {
// TODO(b/247005789): set mAnimatingExit somewhere in shell-transitions setup.
reason = "animating";
win.mAnimatingExit = true;
} else if (win.mDisplayContent.mWallpaperController.isWallpaperTarget(win)