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:
@@ -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(),
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user