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

This commit is contained in:
Kriti Dang
2022-01-28 17:04:01 +00:00
committed by Android (Google) Code Review

View File

@@ -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) -> {
device.setUserPreferredDisplayModeLocked(mode);
// 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