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

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

Merge "Fix ScreenUnblocker message abnormal waiting" into main

parents 77980353 26864ab5
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -101,6 +101,8 @@ class DeferredDisplayUpdater {
    /** Whether {@link #mScreenUnblocker} should wait for transition to be ready. */
    private boolean mShouldWaitForTransitionWhenScreenOn;

    private boolean mInPhysicalDisplayChangeTransition;

    /** The message to notify PhoneWindowManager#finishWindowsDrawn. */
    @Nullable
    private Message mScreenUnblocker;
@@ -196,6 +198,10 @@ class DeferredDisplayUpdater {

        mDisplayContent.mAtmService.startPowerMode(POWER_MODE_REASON_CHANGE_DISPLAY);

        if (physicalDisplayUpdated) {
            mInPhysicalDisplayChangeTransition = true;
        }

        mDisplayContent.mTransitionController.startCollectOrQueue(transition, deferred -> {
            final Rect startBounds = new Rect(0, 0, mDisplayContent.mInitialDisplayWidth,
                    mDisplayContent.mInitialDisplayHeight);
@@ -321,11 +327,15 @@ class DeferredDisplayUpdater {
     * properties.
     */
    void onDisplayContentDisplayPropertiesPostChanged() {
        if (mInPhysicalDisplayChangeTransition) {
            return;
        }
        // Unblock immediately in case there is no transition. This is unlikely to happen.
        if (mScreenUnblocker != null && !mDisplayContent.mTransitionController.inTransition()) {
        if (mScreenUnblocker != null) {
            mScreenUnblocker.sendToTarget();
            mScreenUnblocker = null;
        }
        mShouldWaitForTransitionWhenScreenOn = false;
    }

    /**
@@ -359,6 +369,7 @@ class DeferredDisplayUpdater {
     */
    private void continueScreenUnblocking() {
        synchronized (mDisplayContent.mWmService.mGlobalLock) {
            mInPhysicalDisplayChangeTransition = false;
            mShouldWaitForTransitionWhenScreenOn = false;
            mDisplayContent.mWmService.mH.removeCallbacks(mScreenUnblockTimeoutRunnable);
            if (mScreenUnblocker == null) {