Change the way in which user preferred display mode gets applied
If a display has display specific user pref mode, global user pref mode should not overide it. Test: atest DefaultDisplayModeTest Bug: 201782019 Change-Id: I44e0fbc5177873ed658a4c41032b319f311420ba
This commit is contained in:
@@ -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;
|
||||
@@ -1754,10 +1753,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 "
|
||||
@@ -1811,7 +1806,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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3531,6 +3534,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
|
||||
|
||||
Reference in New Issue
Block a user