Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bcc9dddd authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

Merge "DO NOT MERGE: Revert "Removing the initialising the mode with system pref mode."" into tm-qpr-dev
parents 2afa837b b04ca7ee
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -411,8 +411,11 @@ final class LocalDisplayAdapter extends DisplayAdapter {

            // For a new display, we need to initialize the default mode ID.
            if (mDefaultModeId == INVALID_MODE_ID) {
                mDefaultModeId = activeRecord.mMode.getModeId();
                mDefaultModeGroup = mActiveSfDisplayMode.group;
                mDefaultModeId = mSystemPreferredModeId != INVALID_MODE_ID
                        ? mSystemPreferredModeId : activeRecord.mMode.getModeId();
                mDefaultModeGroup = mSystemPreferredModeId != INVALID_MODE_ID
                        ? preferredSfDisplayMode.group
                        : mActiveSfDisplayMode.group;
            } else if (modesAdded && activeModeChanged) {
                Slog.d(TAG, "New display modes are added and the active mode has changed, "
                        + "use active mode as default mode.");
@@ -894,13 +897,6 @@ final class LocalDisplayAdapter extends DisplayAdapter {
        public void setUserPreferredDisplayModeLocked(Display.Mode mode) {
            final int oldModeId = getPreferredModeId();
            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())) {
                Display.Mode matchingSupportedMode;
                matchingSupportedMode = findMode(mode.getPhysicalWidth(),
+9 −30
Original line number Diff line number Diff line
@@ -764,13 +764,11 @@ public class LocalDisplayAdapterTest {
    @Test
    public void testGetSystemPreferredDisplayMode() throws Exception {
        SurfaceControl.DisplayMode displayMode1 = createFakeDisplayMode(0, 1920, 1080, 60f);
        // system preferred mode
        // preferred mode
        SurfaceControl.DisplayMode displayMode2 = createFakeDisplayMode(1, 3840, 2160, 60f);
        // user preferred mode
        SurfaceControl.DisplayMode displayMode3 = createFakeDisplayMode(2, 1920, 1080, 30f);

        SurfaceControl.DisplayMode[] modes =
                new SurfaceControl.DisplayMode[]{displayMode1, displayMode2, displayMode3};
                new SurfaceControl.DisplayMode[]{displayMode1, displayMode2};
        FakeDisplay display = new FakeDisplay(PORT_A, modes, 0, 1);
        setUpDisplay(display);
        updateAvailableDisplays();
@@ -782,43 +780,24 @@ public class LocalDisplayAdapterTest {

        DisplayDeviceInfo displayDeviceInfo = mListener.addedDisplays.get(
                0).getDisplayDeviceInfoLocked();
        assertThat(displayDeviceInfo.supportedModes.length).isEqualTo(modes.length);
        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();
        assertThat(displayDeviceInfo.supportedModes.length).isEqualTo(modes.length);

        // 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);
        Display.Mode defaultMode = getModeById(displayDeviceInfo, displayDeviceInfo.defaultModeId);
        assertThat(matches(defaultMode, displayMode2)).isTrue();

        // Change the display and add new system preferred mode
        SurfaceControl.DisplayMode addedDisplayInfo = createFakeDisplayMode(3, 2340, 1080, 20f);
        modes = new SurfaceControl.DisplayMode[]{
                displayMode1, displayMode2, displayMode3, addedDisplayInfo};
        // Change the display and add new preferred mode
        SurfaceControl.DisplayMode addedDisplayInfo = createFakeDisplayMode(2, 2340, 1080, 60f);
        modes = new SurfaceControl.DisplayMode[]{displayMode1, displayMode2, addedDisplayInfo};
        display.dynamicInfo.supportedDisplayModes = modes;
        display.dynamicInfo.preferredBootDisplayMode = 3;
        display.dynamicInfo.preferredBootDisplayMode = 2;
        setUpDisplay(display);
        mInjector.getTransmitter().sendHotplug(display, /* connected */ true);
        waitForHandlerToComplete(mHandler, HANDLER_WAIT_MS);

        assertTrue(mListener.traversalRequested);
        assertThat(mListener.addedDisplays.size()).isEqualTo(1);
        assertThat(mListener.changedDisplays.size()).isEqualTo(3);
        assertThat(mListener.changedDisplays.size()).isEqualTo(1);

        DisplayDevice displayDevice = mListener.changedDisplays.get(0);
        displayDevice.applyPendingDisplayDeviceInfoChangesLocked();