Revert "DO NOT MERGE: Revert "Removing the initialising the mode with system pref mode.""

This reverts commit b04ca7eec1.

Reason for revert: The original cl was reverted only for QPR1

Change-Id: I2f836e1f1557b121dea262f9b16f163835f7da67
This commit is contained in:
Kriti Dang
2022-10-07 08:37:10 +00:00
parent b04ca7eec1
commit 2a4e18f705
2 changed files with 39 additions and 14 deletions

View File

@@ -411,11 +411,8 @@ final class LocalDisplayAdapter extends DisplayAdapter {
// For a new display, we need to initialize the default mode ID. // For a new display, we need to initialize the default mode ID.
if (mDefaultModeId == INVALID_MODE_ID) { if (mDefaultModeId == INVALID_MODE_ID) {
mDefaultModeId = mSystemPreferredModeId != INVALID_MODE_ID mDefaultModeId = activeRecord.mMode.getModeId();
? mSystemPreferredModeId : activeRecord.mMode.getModeId(); mDefaultModeGroup = mActiveSfDisplayMode.group;
mDefaultModeGroup = mSystemPreferredModeId != INVALID_MODE_ID
? preferredSfDisplayMode.group
: mActiveSfDisplayMode.group;
} else if (modesAdded && activeModeChanged) { } else if (modesAdded && activeModeChanged) {
Slog.d(TAG, "New display modes are added and the active mode has changed, " Slog.d(TAG, "New display modes are added and the active mode has changed, "
+ "use active mode as default mode."); + "use active mode as default mode.");
@@ -897,6 +894,13 @@ final class LocalDisplayAdapter extends DisplayAdapter {
public void setUserPreferredDisplayModeLocked(Display.Mode mode) { public void setUserPreferredDisplayModeLocked(Display.Mode mode) {
final int oldModeId = getPreferredModeId(); final int oldModeId = getPreferredModeId();
mUserPreferredMode = mode; mUserPreferredMode = mode;
// When clearing the user preferred mode we need to also reset the default mode. This is
// used by DisplayModeDirector to determine the default resolution, so if we don't clear
// it then the resolution won't reset to what it would've been prior to setting a user
// preferred display mode.
if (mode == null && mSystemPreferredModeId != INVALID_MODE_ID) {
mDefaultModeId = mSystemPreferredModeId;
}
if (mode != null && (mode.isRefreshRateSet() || mode.isResolutionSet())) { if (mode != null && (mode.isRefreshRateSet() || mode.isResolutionSet())) {
Display.Mode matchingSupportedMode; Display.Mode matchingSupportedMode;
matchingSupportedMode = findMode(mode.getPhysicalWidth(), matchingSupportedMode = findMode(mode.getPhysicalWidth(),

View File

@@ -764,11 +764,13 @@ public class LocalDisplayAdapterTest {
@Test @Test
public void testGetSystemPreferredDisplayMode() throws Exception { public void testGetSystemPreferredDisplayMode() throws Exception {
SurfaceControl.DisplayMode displayMode1 = createFakeDisplayMode(0, 1920, 1080, 60f); SurfaceControl.DisplayMode displayMode1 = createFakeDisplayMode(0, 1920, 1080, 60f);
// preferred mode // system preferred mode
SurfaceControl.DisplayMode displayMode2 = createFakeDisplayMode(1, 3840, 2160, 60f); SurfaceControl.DisplayMode displayMode2 = createFakeDisplayMode(1, 3840, 2160, 60f);
// user preferred mode
SurfaceControl.DisplayMode displayMode3 = createFakeDisplayMode(2, 1920, 1080, 30f);
SurfaceControl.DisplayMode[] modes = SurfaceControl.DisplayMode[] modes =
new SurfaceControl.DisplayMode[]{displayMode1, displayMode2}; new SurfaceControl.DisplayMode[]{displayMode1, displayMode2, displayMode3};
FakeDisplay display = new FakeDisplay(PORT_A, modes, 0, 1); FakeDisplay display = new FakeDisplay(PORT_A, modes, 0, 1);
setUpDisplay(display); setUpDisplay(display);
updateAvailableDisplays(); updateAvailableDisplays();
@@ -780,24 +782,43 @@ public class LocalDisplayAdapterTest {
DisplayDeviceInfo displayDeviceInfo = mListener.addedDisplays.get( DisplayDeviceInfo displayDeviceInfo = mListener.addedDisplays.get(
0).getDisplayDeviceInfoLocked(); 0).getDisplayDeviceInfoLocked();
assertThat(displayDeviceInfo.supportedModes.length).isEqualTo(modes.length); assertThat(displayDeviceInfo.supportedModes.length).isEqualTo(modes.length);
Display.Mode defaultMode = getModeById(displayDeviceInfo, displayDeviceInfo.defaultModeId); Display.Mode defaultMode = getModeById(displayDeviceInfo, displayDeviceInfo.defaultModeId);
assertThat(matches(defaultMode, displayMode1)).isTrue();
// Set the user preferred display mode
mListener.addedDisplays.get(0).setUserPreferredDisplayModeLocked(
new Display.Mode(
displayMode3.width, displayMode3.height, displayMode3.refreshRate));
updateAvailableDisplays();
waitForHandlerToComplete(mHandler, HANDLER_WAIT_MS);
displayDeviceInfo = mListener.addedDisplays.get(
0).getDisplayDeviceInfoLocked();
defaultMode = getModeById(displayDeviceInfo, displayDeviceInfo.defaultModeId);
assertThat(matches(defaultMode, displayMode3)).isTrue();
// clear the user preferred mode
mListener.addedDisplays.get(0).setUserPreferredDisplayModeLocked(null);
updateAvailableDisplays();
waitForHandlerToComplete(mHandler, HANDLER_WAIT_MS);
displayDeviceInfo = mListener.addedDisplays.get(
0).getDisplayDeviceInfoLocked();
defaultMode = getModeById(displayDeviceInfo, displayDeviceInfo.defaultModeId);
assertThat(matches(defaultMode, displayMode2)).isTrue(); assertThat(matches(defaultMode, displayMode2)).isTrue();
// Change the display and add new preferred mode // Change the display and add new system preferred mode
SurfaceControl.DisplayMode addedDisplayInfo = createFakeDisplayMode(2, 2340, 1080, 60f); SurfaceControl.DisplayMode addedDisplayInfo = createFakeDisplayMode(3, 2340, 1080, 20f);
modes = new SurfaceControl.DisplayMode[]{displayMode1, displayMode2, addedDisplayInfo}; modes = new SurfaceControl.DisplayMode[]{
displayMode1, displayMode2, displayMode3, addedDisplayInfo};
display.dynamicInfo.supportedDisplayModes = modes; display.dynamicInfo.supportedDisplayModes = modes;
display.dynamicInfo.preferredBootDisplayMode = 2; display.dynamicInfo.preferredBootDisplayMode = 3;
setUpDisplay(display); setUpDisplay(display);
mInjector.getTransmitter().sendHotplug(display, /* connected */ true); mInjector.getTransmitter().sendHotplug(display, /* connected */ true);
waitForHandlerToComplete(mHandler, HANDLER_WAIT_MS); waitForHandlerToComplete(mHandler, HANDLER_WAIT_MS);
assertTrue(mListener.traversalRequested); assertTrue(mListener.traversalRequested);
assertThat(mListener.addedDisplays.size()).isEqualTo(1); assertThat(mListener.addedDisplays.size()).isEqualTo(1);
assertThat(mListener.changedDisplays.size()).isEqualTo(1); assertThat(mListener.changedDisplays.size()).isEqualTo(3);
DisplayDevice displayDevice = mListener.changedDisplays.get(0); DisplayDevice displayDevice = mListener.changedDisplays.get(0);
displayDevice.applyPendingDisplayDeviceInfoChangesLocked(); displayDevice.applyPendingDisplayDeviceInfoChangesLocked();