Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a80bbc97 authored by Shan Huang's avatar Shan Huang Committed by Automerger Merge Worker
Browse files

Merge "Skip launcher animation when top window is already animating." into...

Merge "Skip launcher animation when top window is already animating." into tm-qpr-dev am: e9ff71ec am: 94ec0555

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18411178



Change-Id: Ifc0c4a028ce7f512ce706dde6da9b524ee2af7f0
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 625a9709 94ec0555
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -406,7 +406,9 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
    private boolean shouldDispatchToLauncher(int backType) {
        return backType == BackNavigationInfo.TYPE_RETURN_TO_HOME
                && mBackToLauncherCallback != null
                && mEnableAnimations.get();
                && mEnableAnimations.get()
                && mBackNavigationInfo != null
                && mBackNavigationInfo.getDepartingAnimationTarget() != null;
    }

    private static void dispatchOnBackStarted(IOnBackInvokedCallback callback) {
+7 −5
Original line number Diff line number Diff line
@@ -112,6 +112,7 @@ class BackNavigationController {
        RemoteAnimationTarget topAppTarget = null;
        int prevTaskId;
        int prevUserId;
        boolean prepareAnimation;

        BackNavigationInfo.Builder infoBuilder = new BackNavigationInfo.Builder();
        synchronized (wmService.mGlobalLock) {
@@ -257,7 +258,8 @@ class BackNavigationController {
                    BackNavigationInfo.typeToString(backType));

            // For now, we only animate when going home.
            boolean prepareAnimation = backType == BackNavigationInfo.TYPE_RETURN_TO_HOME
            prepareAnimation = backType == BackNavigationInfo.TYPE_RETURN_TO_HOME
                    && requestAnimation
                    // Only create a new leash if no leash has been created.
                    // Otherwise return null for animation target to avoid conflict.
                    && !removedWindowContainer.hasCommittedReparentToAnimationLeash();
@@ -292,7 +294,7 @@ class BackNavigationController {
            }

            // Special handling for back to home animation
            if (backType == BackNavigationInfo.TYPE_RETURN_TO_HOME && requestAnimation
            if (backType == BackNavigationInfo.TYPE_RETURN_TO_HOME && prepareAnimation
                    && prevTask != null) {
                currentTask.mBackGestureStarted = true;
                // Make launcher show from behind by marking its top activity as visible and
@@ -347,7 +349,7 @@ class BackNavigationController {
            Task finalTask = currentTask;
            RemoteCallback onBackNavigationDone = new RemoteCallback(result -> onBackNavigationDone(
                    result, finalRemovedWindowContainer, finalBackType, finalTask,
                    finalprevActivity, requestAnimation));
                    finalprevActivity, prepareAnimation));
            infoBuilder.setOnBackNavigationDone(onBackNavigationDone);
        }

@@ -381,14 +383,14 @@ class BackNavigationController {

    private void onBackNavigationDone(
            Bundle result, WindowContainer<?> windowContainer, int backType,
            Task task, ActivityRecord prevActivity, boolean requestAnimation) {
            Task task, ActivityRecord prevActivity, boolean prepareAnimation) {
        SurfaceControl surfaceControl = windowContainer.getSurfaceControl();
        boolean triggerBack = result != null && result.getBoolean(
                BackNavigationInfo.KEY_TRIGGER_BACK);
        ProtoLog.d(WM_DEBUG_BACK_PREVIEW, "onBackNavigationDone backType=%s, "
                + "task=%s, prevActivity=%s", backType, task, prevActivity);

        if (backType == BackNavigationInfo.TYPE_RETURN_TO_HOME && requestAnimation) {
        if (backType == BackNavigationInfo.TYPE_RETURN_TO_HOME && prepareAnimation) {
            if (triggerBack) {
                if (surfaceControl != null && surfaceControl.isValid()) {
                    // When going back to home, hide the task surface before it is re-parented to