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

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

Merge "Change the way in which user preferred display mode gets applied"

parents 2bbbc9a2 a0f62f21
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -141,7 +141,6 @@ import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -1756,10 +1755,6 @@ public final class DisplayManagerService extends SystemService {

    void setUserPreferredDisplayModeInternal(int displayId, Display.Mode mode) {
        synchronized (mSyncRoot) {
            if (Objects.equals(mUserPreferredMode, mode) && displayId == Display.INVALID_DISPLAY) {
                return;
            }

            if (mode != null && !isResolutionAndRefreshRateValid(mode)
                    && displayId == Display.INVALID_DISPLAY) {
                throw new IllegalArgumentException("width, height and refresh rate of mode should "
@@ -1813,7 +1808,15 @@ public final class DisplayManagerService extends SystemService {
        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.USER_PREFERRED_RESOLUTION_WIDTH, resolutionWidth);
        mDisplayDeviceRepo.forEachLocked((DisplayDevice device) -> {
            // If there is a display specific mode, don't override that
            final Point deviceUserPreferredResolution =
                    mPersistentDataStore.getUserPreferredResolution(device);
            final float deviceRefreshRate =
                    mPersistentDataStore.getUserPreferredRefreshRate(device);
            if (!isValidResolution(deviceUserPreferredResolution)
                    && !isValidRefreshRate(deviceRefreshRate)) {
                device.setUserPreferredDisplayModeLocked(mode);
            }
        });
    }

@@ -3533,6 +3536,14 @@ public final class DisplayManagerService extends SystemService {
                && (brightness <= PowerManager.BRIGHTNESS_MAX);
    }

    private static boolean isValidResolution(Point resolution) {
        return (resolution != null) && (resolution.x > 0) && (resolution.y > 0);
    }

    private static boolean isValidRefreshRate(float refreshRate) {
        return !Float.isNaN(refreshRate) && (refreshRate > 0.0f);
    }

    private final class LocalService extends DisplayManagerInternal {

        @Override