From 48c6bb3750f8fc9447bce455d1c7fdc34f96e647 Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Fri, 8 Nov 2024 04:44:19 +0000 Subject: Only ignore transition change of finishing transient launch Since I52bb8ecbed7437107c776ad5fdd4b4d4d4d4f962 The visibility change when restoring transient launch is changed from (2) to (1). WindowOrganizerController's finishTransition (1) applyTransaction (2) t.finishTransition So it is also in playing state. With additional transient check, this would also reduce adding the flag accidentally, such as swiping between app and home multiple times very quickly. Bug: 377427846 Flag: EXEMPT bugfix Test: A task contains 2 activities. The first one calls sleep 300ms in onResume (easier to tap nav bar). Finish the top one and tap nav bar quickly. The transition should play normal activity switch animation instead of a jumpcut (disturbed by the change info of transient launch). Change-Id: Id4fe5e0e2f907e68245442fa6a8dcd998caa9087 --- services/core/java/com/android/server/wm/ActivityRecord.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 73ae51c6e64a..adb6c1979ea9 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -5549,8 +5549,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (!visible) { if (mTransitionController.inPlayingTransition(this)) { mTransitionChangeFlags |= FLAG_IS_OCCLUDED; - } else if (mTransitionController.inFinishingTransition(this)) { - mTransitionChangeFlags |= FLAGS_IS_OCCLUDED_NO_ANIMATION; + if (mTransitionController.mFinishingTransition != null + && mTransitionController.mFinishingTransition.isTransientLaunch(this)) { + mTransitionChangeFlags |= FLAGS_IS_OCCLUDED_NO_ANIMATION; + } } } else { mTransitionChangeFlags &= ~FLAG_IS_OCCLUDED; -- cgit v1.2.3-59-g8ed1b