diff options
| author | 2023-03-20 21:43:54 +0000 | |
|---|---|---|
| committer | 2023-03-20 21:43:54 +0000 | |
| commit | 97e510a2d1f52f6f32e75d2c17a859f1ca077cb4 (patch) | |
| tree | 84e1469e2e045f876b822d61212e8fac2b7b21d1 | |
| parent | 298059150dc7545c72db537c5a3a4e1cb662f952 (diff) | |
| parent | 1f4cce9ab3587a4c383507ed62d687e67cd1c05f (diff) | |
Merge "Fix bug in mixedhandler merging" into udc-dev
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java index d0948923dc6e..aa851d1bd30f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java @@ -272,13 +272,18 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler { info.getChanges().remove(i); } } + Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> { + --mixed.mInFlightSubAnimations; + mixed.joinFinishArgs(wct, wctCB); + if (mixed.mInFlightSubAnimations > 0) return; + mActiveTransitions.remove(mixed); + finishCallback.onTransitionFinished(mixed.mFinishWCT, wctCB); + }; if (pipChange == null) { if (mixed.mLeftoversHandler != null) { + mixed.mInFlightSubAnimations = 1; if (mixed.mLeftoversHandler.startAnimation(mixed.mTransition, - info, startTransaction, finishTransaction, (wct, wctCB) -> { - mActiveTransitions.remove(mixed); - finishCallback.onTransitionFinished(wct, wctCB); - })) { + info, startTransaction, finishTransaction, finishCB)) { return true; } } @@ -287,13 +292,6 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler { } ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " Splitting PIP into a separate" + " animation because remote-animation likely doesn't support it"); - Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> { - --mixed.mInFlightSubAnimations; - mixed.joinFinishArgs(wct, wctCB); - if (mixed.mInFlightSubAnimations > 0) return; - mActiveTransitions.remove(mixed); - finishCallback.onTransitionFinished(mixed.mFinishWCT, wctCB); - }; // Split the transition into 2 parts: the pip part and the rest. mixed.mInFlightSubAnimations = 2; // make a new startTransaction because pip's startEnterAnimation "consumes" it so |