From bd88ab69752891f7e2e45a7a0c2f980a06019d77 Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Wed, 7 Jun 2023 10:20:36 -0700 Subject: [PATCH] Don't apply transactions of abort out-of-order. We've started to use abort for more than just aborting (ie. we abort for certain transitions we consider "hidden"). As a result, we actually do need to maintain it's apply ordering with other transitions. So, apply it's startT and finishT at the "normal" times (ie. when it is taken off ready queue. Bug: 283887866 Test: observe winscope in ctsverifier test from bug. Change-Id: Ie063de29ea7a81e5874bfe7c35b29665170b362a --- .../src/com/android/wm/shell/transition/Transitions.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java index cdc82eadcd902..31ca16c30bee9 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java @@ -809,6 +809,9 @@ public class Transitions implements RemoteCallable, track.mReadyTransitions.remove(0); track.mActiveTransition = ready; if (ready.mAborted) { + if (ready.mStartT != null) { + ready.mStartT.apply(); + } // finish now since there's nothing to animate. Calls back into processReadyQueue onFinish(ready, null, null); return; @@ -936,10 +939,6 @@ public class Transitions implements RemoteCallable, /** Aborts a transition. This will still queue it up to maintain order. */ private void onAbort(ActiveTransition transition) { final Track track = mTracks.get(transition.getTrack()); - // apply immediately since they may be "parallel" operations: We currently we use abort for - // thing which are independent to other transitions (like starting-window transfer). - transition.mStartT.apply(); - transition.mFinishT.apply(); transition.mAborted = true; mTracer.logAborted(transition.mInfo.getDebugId());