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

Commit 1b89cdbd authored by Riddle Hsu's avatar Riddle Hsu Committed by Android (Google) Code Review
Browse files

Merge "Use seamless for collecting transition with fixed rotation" into tm-qpr-dev

parents d964925e e3a8bcca
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -7710,6 +7710,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        // This activity may relaunch or perform configuration change so once it has reported drawn,
        // the screen can be unfrozen.
        ensureActivityConfiguration(0 /* globalChanges */, !PRESERVE_WINDOWS);
        if (mTransitionController.isCollecting(this)) {
            // In case the task was changed from PiP but still keeps old transform.
            task.resetSurfaceControlTransforms();
        }
    }

    void setRequestedOrientation(int requestedOrientation) {
+14 −6
Original line number Diff line number Diff line
@@ -3334,6 +3334,9 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
            if (!controller.isCollecting(this)) {
                controller.collect(this);
                startAsyncRotationIfNeeded();
                if (mFixedRotationLaunchingApp != null) {
                    setSeamlessTransitionForFixedRotation(controller.getCollectingTransition());
                }
            }
            return;
        }
@@ -3343,12 +3346,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
            mAtmService.startLaunchPowerMode(POWER_MODE_REASON_CHANGE_DISPLAY);
            if (mFixedRotationLaunchingApp != null) {
                // A fixed-rotation transition is done, then continue to start a seamless display
                // transition. And be fore the start transaction is applied, the non-app windows
                // need to keep in previous rotation to avoid showing inconsistent content.
                t.setSeamlessRotation(this);
                if (mAsyncRotationController != null) {
                    mAsyncRotationController.keepAppearanceInPreviousRotation();
                }
                // transition.
                setSeamlessTransitionForFixedRotation(t);
            } else if (isRotationChanging()) {
                if (displayChange != null) {
                    final boolean seamless = mDisplayRotation.shouldRotateSeamlessly(
@@ -3367,6 +3366,15 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        }
    }

    private void setSeamlessTransitionForFixedRotation(Transition t) {
        t.setSeamlessRotation(this);
        // Before the start transaction is applied, the non-app windows need to keep in previous
        // rotation to avoid showing inconsistent content.
        if (mAsyncRotationController != null) {
            mAsyncRotationController.keepAppearanceInPreviousRotation();
        }
    }

    /** If the display is in transition, there should be a screenshot covering it. */
    @Override
    boolean inTransition() {