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

Commit d2954604 authored by Riddle Hsu's avatar Riddle Hsu Committed by Automerger Merge Worker
Browse files

Merge "Re-show faded PiP when fixed rotation is finished" into udc-dev am: 50135efb

parents a0f103ab 50135efb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1007,6 +1007,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
            return;
        }
        if (Transitions.ENABLE_SHELL_TRANSITIONS) {
            mPipTransitionController.onFixedRotationFinished();
            clearWaitForFixedRotation();
            return;
        }
+23 −1
Original line number Diff line number Diff line
@@ -409,9 +409,31 @@ public class PipTransition extends PipTransitionController {

    @Override
    public void onFixedRotationStarted() {
        fadeEnteredPipIfNeed(false /* show */);
    }

    @Override
    public void onFixedRotationFinished() {
        fadeEnteredPipIfNeed(true /* show */);
    }

    private void fadeEnteredPipIfNeed(boolean show) {
        // The transition with this fixed rotation may be handled by other handler before reaching
        // PipTransition, so we cannot do this in #startAnimation.
        if (mPipTransitionState.getTransitionState() == ENTERED_PIP && !mHasFadeOut) {
        if (!mPipTransitionState.hasEnteredPip()) {
            return;
        }
        if (show && mHasFadeOut) {
            // If there is a pending transition, then let startAnimation handle it. And if it is
            // handled, mHasFadeOut will be set to false and this runnable will be no-op. Otherwise
            // make sure the PiP will reshow, e.g. swipe-up with fixed rotation (fade-out) but
            // return to the current app (only finish the recent transition).
            mTransitions.runOnIdle(() -> {
                if (mHasFadeOut && mPipTransitionState.hasEnteredPip()) {
                    fadeExistingPip(true /* show */);
                }
            });
        } else if (!show && !mHasFadeOut) {
            // Fade out the existing PiP to avoid jump cut during seamless rotation.
            fadeExistingPip(false /* show */);
        }
+4 −0
Original line number Diff line number Diff line
@@ -123,6 +123,10 @@ public abstract class PipTransitionController implements Transitions.TransitionH
    public void onFixedRotationStarted() {
    }

    /** Called when the fixed rotation finished. */
    public void onFixedRotationFinished() {
    }

    public PipTransitionController(
            @NonNull ShellInit shellInit,
            @NonNull ShellTaskOrganizer shellTaskOrganizer,