Stop reparenting surfaces during app transtion animation.
This is a first step to restructure the app transition, and the change is
behind the flag persist.wm.new_transit_animations.
Bug: 131661052
Change-Id: I9a23440c6c5d28ea937121e95985b3bd6f3cc451
Test: No-op for production. Pass existing tests.
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index ffd9021..93b8f00 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -2503,14 +2503,18 @@
@Override
public SurfaceControl getAnimationLeashParent() {
- // All normal app transitions take place in an animation layer which is below the pinned
- // stack but may be above the parent stacks of the given animating apps.
// For transitions in the pinned stack (menu activity) we just let them occur as a child
// of the pinned stack.
- if (!inPinnedWindowingMode()) {
- return getAppAnimationLayer();
- } else {
+ // All normal app transitions take place in an animation layer which is below the pinned
+ // stack but may be above the parent stacks of the given animating apps by default. When
+ // a new hierarchical animation is enabled, we just let them occur as a child of the parent
+ // stack, i.e. the hierarchy of the surfaces is unchanged.
+ if (inPinnedWindowingMode()) {
return getStack().getSurfaceControl();
+ } else if (WindowManagerService.sHierarchicalAnimations) {
+ return super.getAnimationLeashParent();
+ } else {
+ return getAppAnimationLayer();
}
}