Apply the setting update on systemReady apart from onDisplayAdded.

onDisplayAdded gets called before systemReady, and till that time the
correct settings are not yet updated. So, apply the settings on display
after they can be fetched correctly.

Bug: 261552562
Test: adb shell dumpsys display
Change-Id: I23fe147862c58571a0fddcd35de18be20e5074a9
This commit is contained in:
Kriti Dang
2022-12-14 15:43:20 +01:00
parent 8bdd5306a1
commit c71afba06c

View File

@@ -628,7 +628,6 @@ public final class DisplayManagerService extends SystemService {
recordTopInsetLocked(mLogicalDisplayMapper.getDisplayLocked(Display.DEFAULT_DISPLAY));
updateSettingsLocked();
updateUserDisabledHdrTypesFromSettingsLocked();
updateUserPreferredDisplayModeSettingsLocked();
}
@@ -852,6 +851,15 @@ public final class DisplayManagerService extends SystemService {
for (int i = 0; i < userDisabledHdrTypeStrings.length; i++) {
mUserDisabledHdrTypes[i] = Integer.parseInt(userDisabledHdrTypeStrings[i]);
}
if (!mAreUserDisabledHdrTypesAllowed) {
mLogicalDisplayMapper.forEachLocked(
display -> {
display.setUserDisabledHdrTypes(mUserDisabledHdrTypes);
handleLogicalDisplayChangedLocked(display);
});
}
} catch (NumberFormatException e) {
Slog.e(TAG, "Failed to parse USER_DISABLED_HDR_FORMATS. "
+ "Clearing the setting.", e);
@@ -879,6 +887,15 @@ public final class DisplayManagerService extends SystemService {
Settings.Global.USER_PREFERRED_RESOLUTION_WIDTH, Display.INVALID_DISPLAY_WIDTH);
Display.Mode mode = new Display.Mode(width, height, refreshRate);
mUserPreferredMode = isResolutionAndRefreshRateValid(mode) ? mode : null;
if (mUserPreferredMode != null) {
mDisplayDeviceRepo.forEachLocked((DisplayDevice device) -> {
device.setUserPreferredDisplayModeLocked(mode);
});
} else {
mLogicalDisplayMapper.forEachLocked((LogicalDisplay display) -> {
configurePreferredDisplayModeLocked(display);
});
}
}
private DisplayInfo getDisplayInfoForFrameRateOverride(DisplayEventReceiver.FrameRateOverride[]