From 423ec2a6e9a3a19eea07ba93f3c655fb21d689be Mon Sep 17 00:00:00 2001 From: Ikram Gabiyev Date: Wed, 13 Sep 2023 17:39:53 -0700 Subject: Do not collect activity in finishTransition Make sure that athe ActivityRecord of the pip activity is not being collected upon finishing the transition if it was already collected the part of enter pip transition before playing. Bug: 293132828 Test: manually repro steps in the bug Change-Id: I9e430f5883d6b1d7cae93fb0029e145b4f34d7ff --- services/core/java/com/android/server/wm/ActivityRecord.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 60854885d5bb..06834322405b 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -9177,7 +9177,13 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A getRequestedOverrideWindowingMode() == WINDOWING_MODE_UNDEFINED ? newParentConfig.windowConfiguration.getWindowingMode() : getRequestedOverrideWindowingMode(); - if (getWindowingMode() != projectedWindowingMode) { + if (getWindowingMode() != projectedWindowingMode + // Do not collect a pip activity about to enter pinned mode + // as a part of WindowOrganizerController#finishTransition(). + // If not checked the activity might be collected for the wrong transition, + // such as a TRANSIT_OPEN transition requested right after TRANSIT_PIP. + && !(mWaitForEnteringPinnedMode + && mTransitionController.inFinishingTransition(this))) { mTransitionController.collect(this); } } -- cgit v1.2.3-59-g8ed1b