diff options
author | 2023-09-25 10:53:45 +0000 | |
---|---|---|
committer | 2023-09-25 10:53:45 +0000 | |
commit | d69234a022ef36b40549623199f98e550d34ef0b (patch) | |
tree | 89d4b8676da266eafdabcdfcd6162036079f3b7e | |
parent | 71d325d523741567239001c1d9404d1fee09b465 (diff) | |
parent | fd01145682c7a9be73c777bd7676dabeaead4757 (diff) |
Merge "Ask remote transition handler to handle transiton in MixedHandler" into udc-qpr-dev am: fd01145682
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24798163
Change-Id: I67c728deb2bbbb26785c57c97fcaea37ade22ff1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java | 28 |
1 files changed, 26 insertions, 2 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 986560bd6053..c45770280c85 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 @@ -113,6 +113,14 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler, WindowContainerTransaction mFinishWCT = null; /** + * Whether the transition has request for remote transition while mLeftoversHandler + * isn't remote transition handler. + * If true and the mLeftoversHandler can handle the transition, need to notify remote + * transition handler to consume the transition. + */ + boolean mHasRequestToRemote; + + /** * Mixed transitions are made up of multiple "parts". This keeps track of how many * parts are currently animating. */ @@ -204,6 +212,10 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler, MixedTransition.TYPE_OPTIONS_REMOTE_AND_PIP_CHANGE, transition); mixed.mLeftoversHandler = handler.first; mActiveTransitions.add(mixed); + if (mixed.mLeftoversHandler != mPlayer.getRemoteTransitionHandler()) { + mixed.mHasRequestToRemote = true; + mPlayer.getRemoteTransitionHandler().handleRequest(transition, request); + } return handler.second; } else if (mSplitHandler.isSplitScreenVisible() && isOpeningType(request.getType()) @@ -331,8 +343,17 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler, } else if (mixed.mType == MixedTransition.TYPE_DISPLAY_AND_SPLIT_CHANGE) { return false; } else if (mixed.mType == MixedTransition.TYPE_OPTIONS_REMOTE_AND_PIP_CHANGE) { - return animateOpenIntentWithRemoteAndPip(mixed, info, startTransaction, - finishTransaction, finishCallback); + final boolean handledToPip = animateOpenIntentWithRemoteAndPip(mixed, info, + startTransaction, finishTransaction, finishCallback); + // Consume the transition on remote handler if the leftover handler already handle this + // transition. And if it cannot, the transition will be handled by remote handler, so + // don't consume here. + // Need to check leftOverHandler as it may change in #animateOpenIntentWithRemoteAndPip + if (handledToPip && mixed.mHasRequestToRemote + && mixed.mLeftoversHandler != mPlayer.getRemoteTransitionHandler()) { + mPlayer.getRemoteTransitionHandler().onTransitionConsumed(transition, false, null); + } + return handledToPip; } else if (mixed.mType == MixedTransition.TYPE_RECENTS_DURING_SPLIT) { for (int i = info.getChanges().size() - 1; i >= 0; --i) { final TransitionInfo.Change change = info.getChanges().get(i); @@ -804,5 +825,8 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler, } else if (mixed.mType == MixedTransition.TYPE_UNFOLD) { mUnfoldHandler.onTransitionConsumed(transition, aborted, finishT); } + if (mixed.mHasRequestToRemote) { + mPlayer.getRemoteTransitionHandler().onTransitionConsumed(transition, aborted, finishT); + } } } |