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
This commit is contained in:
Ben Murdoch
2021-02-19 18:02:57 +00:00
parent 693fcb5913
commit 38567b98d4
3 changed files with 20 additions and 3 deletions

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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;