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

Commit 5dcb8aad authored by Kriti Dang's avatar Kriti Dang Committed by Android (Google) Code Review
Browse files

Merge "Change the density value to be constrained by config_maxUIWidth, in case of user switch"

parents dfbb34a6 771793ca
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -340,7 +340,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
    private WindowState mTmpWindow;
    private boolean mUpdateImeTarget;
    private boolean mTmpInitial;
    private int mMaxUiWidth;
    private int mMaxUiWidth = 0;

    final AppTransition mAppTransition;
    final AppTransitionController mAppTransitionController;
@@ -365,9 +365,10 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
    // Initial display metrics.
    int mInitialDisplayWidth = 0;
    int mInitialDisplayHeight = 0;
    int mInitialDisplayDensity = 0;
    float mInitialPhysicalXDpi = 0.0f;
    float mInitialPhysicalYDpi = 0.0f;
    // The physical density of the display
    int mInitialDisplayDensity = 0;

    private Point mPhysicalDisplaySize;

@@ -2628,6 +2629,17 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        return mCurrentOverrideConfigurationChanges;
    }

    /**
     * @return The initial display density. This is constrained by config_maxUIWidth.
     */
    int getInitialDisplayDensity() {
        int density = mInitialDisplayDensity;
        if (mMaxUiWidth > 0 && mInitialDisplayWidth > mMaxUiWidth) {
            density = (int) ((density * mMaxUiWidth) / (float) mInitialDisplayWidth);
        }
        return density;
    }

    @Override
    public void onConfigurationChanged(Configuration newParentConfig) {
        final int lastOrientation = getConfiguration().orientation;
@@ -2956,7 +2968,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
     *               so only need to configure display.
     */
    void setForcedDensity(int density, int userId) {
        mIsDensityForced = density != mInitialDisplayDensity;
        mIsDensityForced = density != getInitialDisplayDensity();
        final boolean updateCurrent = userId == UserHandle.USER_CURRENT;
        if (mWmService.mCurrentUserId == userId || updateCurrent) {
            mBaseDisplayDensity = density;
@@ -2967,7 +2979,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
            return;
        }

        if (density == mInitialDisplayDensity) {
        if (density == getInitialDisplayDensity()) {
            density = 0;
        }
        mWmService.mDisplayWindowSettings.setForcedDensity(this, density, userId);
+1 −1
Original line number Diff line number Diff line
@@ -276,7 +276,7 @@ class DisplayWindowSettings {
        final int width = hasSizeOverride ? settings.mForcedWidth : dc.mInitialDisplayWidth;
        final int height = hasSizeOverride ? settings.mForcedHeight : dc.mInitialDisplayHeight;
        final int density = hasDensityOverride ? settings.mForcedDensity
                : dc.mInitialDisplayDensity;
                : dc.getInitialDisplayDensity();
        dc.updateBaseDisplayMetrics(width, height, density, dc.mBaseDisplayPhysicalXDpi,
                dc.mBaseDisplayPhysicalYDpi);

+4 −4
Original line number Diff line number Diff line
@@ -3577,8 +3577,8 @@ public class WindowManagerService extends IWindowManager.Stub
            // Otherwise, we'll update it when it's prepared.
            if (mDisplayReady) {
                final int forcedDensity = getForcedDisplayDensityForUserLocked(newUserId);
                final int targetDensity = forcedDensity != 0 ? forcedDensity
                        : displayContent.mInitialDisplayDensity;
                final int targetDensity = forcedDensity != 0
                        ? forcedDensity : displayContent.getInitialDisplayDensity();
                displayContent.setForcedDensity(targetDensity, UserHandle.USER_CURRENT);
            }
        }
@@ -5789,7 +5789,7 @@ public class WindowManagerService extends IWindowManager.Stub
        synchronized (mGlobalLock) {
            final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
            if (displayContent != null && displayContent.hasAccess(Binder.getCallingUid())) {
                return displayContent.mInitialDisplayDensity;
                return displayContent.getInitialDisplayDensity();
            }
        }
        return -1;
@@ -5844,7 +5844,7 @@ public class WindowManagerService extends IWindowManager.Stub
            synchronized (mGlobalLock) {
                final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
                if (displayContent != null) {
                    displayContent.setForcedDensity(displayContent.mInitialDisplayDensity,
                    displayContent.setForcedDensity(displayContent.getInitialDisplayDensity(),
                            callingUserId);
                }
            }