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

Commit 38567b98 authored by Ben Murdoch's avatar Ben Murdoch
Browse files

Correctly select peak refresh rate.

Currently we will get an arbitrary value that is greater than the
default depending on the order returned by the Display.

Bug: 180723012
Test: make RunSettingsRoboTests
      ROBOTEST_FILTER="com.android.settings.display.PeakRefreshRatePreferenceControllerTest"
Change-Id: Id2c99f2bea9c6b2814d82a9db3a417e4a93ee06d
parent 693fcb59
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -122,7 +122,7 @@ public class ForcePeakRefreshRatePreferenceController extends DeveloperOptionsPr
    private float findPeakRefreshRate(Display.Mode[] modes) {
        float peakRefreshRate = DEFAULT_REFRESH_RATE;
        for (Display.Mode mode : modes) {
            if (Math.round(mode.getRefreshRate()) > DEFAULT_REFRESH_RATE) {
            if (Math.round(mode.getRefreshRate()) > peakRefreshRate) {
                peakRefreshRate = mode.getRefreshRate();
            }
        }
+3 −2
Original line number Diff line number Diff line
@@ -129,10 +129,11 @@ public class PeakRefreshRatePreferenceController extends TogglePreferenceControl
        mDeviceConfigDisplaySettings.stopListening();
    }

    private float findPeakRefreshRate(Display.Mode[] modes) {
    @VisibleForTesting
    float findPeakRefreshRate(Display.Mode[] modes) {
        float peakRefreshRate = DEFAULT_REFRESH_RATE;
        for (Display.Mode mode : modes) {
            if (Math.round(mode.getRefreshRate()) > DEFAULT_REFRESH_RATE) {
            if (Math.round(mode.getRefreshRate()) > peakRefreshRate) {
                peakRefreshRate = mode.getRefreshRate();
            }
        }
+16 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat;

import android.content.Context;
import android.provider.Settings;
import android.view.Display;

import androidx.preference.SwitchPreference;

@@ -102,6 +103,21 @@ public class PeakRefreshRatePreferenceControllerTest {
        assertThat(mController.isChecked()).isFalse();
    }

    @Test
    public void findPeakRefreshRate_moreThanOneHigherThanDefault() {
        Display.Mode lower = new Display.Mode(0, 0, 0, DEFAULT_REFRESH_RATE - 1);
        Display.Mode def = new Display.Mode(0, 0, 0, DEFAULT_REFRESH_RATE);
        Display.Mode higher = new Display.Mode(0, 0, 0, DEFAULT_REFRESH_RATE + 1);
        Display.Mode higher1 = new Display.Mode(0, 0, 0, DEFAULT_REFRESH_RATE + 2);

        assertThat(mController.findPeakRefreshRate(
                new Display.Mode[] {lower, def, higher, higher1}))
                .isEqualTo(DEFAULT_REFRESH_RATE + 2);
        assertThat(mController.findPeakRefreshRate(
                new Display.Mode[] {lower, def, higher1, higher}))
                .isEqualTo(DEFAULT_REFRESH_RATE + 2);
    }

    private void enableSmoothDisplayPreference() {
        mController.mPeakRefreshRate = 88f;