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

Commit f18a9641 authored by Robin Lee's avatar Robin Lee
Browse files

Don't recompute display mode during a mode switch

When an app requests a display mode change, it's plausible that the next
thing to happen is going to be a configuration change.

During the configuration change, multiple windows that contributed to
the selection of the display mode will no longer be displayed. This can
lead to a device bouncing between two display modes for a while.

We need to wait for windows to redraw and for the screen to unfreeze
again before we next call DisplayManagerService.setDisplayProperties.

Test: atest android.display.cts.DisplayTest
Bug: 158316271
Change-Id: I58e4626e74a911a14cbcd426d1f09ef68303dafa
parent 7ee87037
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -4185,12 +4185,14 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        mInsetsStateController.getImeSourceProvider().checkShowImePostLayout();

        mLastHasContent = mTmpApplySurfaceChangesTransactionState.displayHasContent;
        if (!mWmService.mDisplayFrozen) {
            mWmService.mDisplayManagerInternal.setDisplayProperties(mDisplayId,
                    mLastHasContent,
                    mTmpApplySurfaceChangesTransactionState.preferredRefreshRate,
                    mTmpApplySurfaceChangesTransactionState.preferredModeId,
                    mTmpApplySurfaceChangesTransactionState.preferMinimalPostProcessing,
                    true /* inTraversal, must call performTraversalInTrans... below */);
        }

        final boolean wallpaperVisible = mWallpaperController.isWallpaperVisible();
        if (wallpaperVisible != mLastWallpaperVisible) {