diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 2900a5df61987..5969e856a56b0 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -3181,6 +3181,7 @@ class WindowContainer extends ConfigurationContainer< mLastLayer = -1; mWmService.mSurfaceAnimationRunner.onAnimationLeashLost(mAnimationLeash, t); mAnimationLeash = null; + mNeedsZBoost = false; reassignLayer(t); updateSurfacePosition(t); } diff --git a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java index ebefeaff7f263..e4628c45a15b9 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java @@ -88,6 +88,11 @@ public class AppWindowTokenAnimationTests extends WindowTestsBase { verify(mTransaction).setLayer(eq(mActivity.mAnimationBoundsLayer), intThat(layer -> layer > topActivity.getLastLayer())); + + // The layer should be restored after the animation leash is removed. + mActivity.onAnimationLeashLost(mTransaction); + assertThat(mActivity.mNeedsZBoost).isFalse(); + assertThat(topActivity.getLastLayer()).isGreaterThan(mActivity.getLastLayer()); } @Test