Add a no-op animation for non-changing apps during change transition
Without this, other closing apps during a change transition would
immediately turn invisible because they had no animation. By adding
a no-op, it basically keeps everything visible and stationary until
the transition finishes.
Bug: 113252739
Test: Manual, wallpaper remains visible while maximizing freeform app
Change-Id: I968280ae2915eb571b33a73a1f182228bc8fec74
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index d915e10..a52f1af 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -2340,11 +2340,6 @@
return transit == TRANSIT_TASK_CHANGE_WINDOWING_MODE;
}
- private int getDefaultChangeTransitionDuration() {
- return (int) (AppTransition.DEFAULT_APP_TRANSITION_DURATION
- * mWmService.getTransitionAnimationScaleLocked());
- }
-
boolean applyAnimationLocked(WindowManager.LayoutParams lp, int transit, boolean enter,
boolean isVoiceInteraction) {
@@ -2378,17 +2373,17 @@
adapter = adapters.mAdapter;
thumbnailAdapter = adapters.mThumbnailAdapter;
} else if (isChanging) {
- int duration = getDefaultChangeTransitionDuration();
+ final float durationScale = mWmService.getTransitionAnimationScaleLocked();
mTmpRect.offsetTo(mTmpPoint.x, mTmpPoint.y);
adapter = new LocalAnimationAdapter(
new WindowChangeAnimationSpec(mTransitStartRect, mTmpRect,
- getDisplayContent().getDisplayInfo(), duration,
+ getDisplayContent().getDisplayInfo(), durationScale,
true /* isAppAnimation */, false /* isThumbnail */),
mWmService.mSurfaceAnimationRunner);
if (mThumbnail != null) {
thumbnailAdapter = new LocalAnimationAdapter(
new WindowChangeAnimationSpec(mTransitStartRect, mTmpRect,
- getDisplayContent().getDisplayInfo(), duration,
+ getDisplayContent().getDisplayInfo(), durationScale,
true /* isAppAnimation */, true /* isThumbnail */),
mWmService.mSurfaceAnimationRunner);
}