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

Commit f129289d authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Only run layout if we didn't have content

Otherwise we really don't have to do it as showing the window will
not change whether we have content or not.

Test: Reopen app, ensure less layout runs
Test: Launch activity on virtual display.

Bug: 112824998
Bug: 115577618
Change-Id: Id3bea85c93ead5e59f0456a2901378dd2c4a836f
parent b11b75ac
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -409,6 +409,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo

    private InputMonitor mInputMonitor;

    /** Caches the value whether told display manager that we have content. */
    private boolean mLastHasContent;

    /**
     * The input method window for this display.
     */
@@ -3092,8 +3095,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
        forAllWindows(mApplySurfaceChangesTransaction, true /* traverseTopToBottom */);
        prepareSurfaces();

        mLastHasContent = mTmpApplySurfaceChangesTransactionState.displayHasContent;
        mService.mDisplayManagerInternal.setDisplayProperties(mDisplayId,
                mTmpApplySurfaceChangesTransactionState.displayHasContent,
                mLastHasContent,
                mTmpApplySurfaceChangesTransactionState.preferredRefreshRate,
                mTmpApplySurfaceChangesTransactionState.preferredModeId,
                true /* inTraversal, must call performTraversalInTrans... below */);
@@ -4267,4 +4271,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
    InputMonitor getInputMonitor() {
        return mInputMonitor;
    }

    /**
     * @return Cached value whether we told display manager that we have content.
     */
    boolean getLastHasContent() {
        return mLastHasContent;
    }
}
+11 −9
Original line number Diff line number Diff line
@@ -1176,6 +1176,7 @@ class WindowStateAnimator {
                        if (mIsWallpaper) {
                            w.dispatchWallpaperVisibility(true);
                        }
                        if (!w.getDisplayContent().getLastHasContent()) {
                            // This draw means the difference between unique content and mirroring.
                            // Run another pass through performLayout to set mHasContent in the
                            // LogicalDisplay.
@@ -1186,6 +1187,7 @@ class WindowStateAnimator {
                                        "showSurfaceRobustlyLocked " + w,
                                        mAnimator.getPendingLayoutChanges(w.getDisplayId()));
                            }
                        }
                    } else {
                        w.setOrientationChanging(false);
                    }