Merge "DisplayModeDirector: fix an arithmetic error"

This commit is contained in:
Ady Abraham
2023-01-27 22:47:15 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 1 deletions

View File

@@ -635,7 +635,9 @@ public class DisplayModeDirector {
// which is within the render rate range
// - 90hz is not in range as none of the even divisors (i.e. 90, 45, 30)
// fall within the acceptable render range.
final int divisor = (int) Math.ceil(physicalRefreshRate / summary.maxRenderFrameRate);
final int divisor =
(int) Math.ceil((physicalRefreshRate / summary.maxRenderFrameRate)
- FLOAT_TOLERANCE);
float adjustedPhysicalRefreshRate = physicalRefreshRate / divisor;
if (adjustedPhysicalRefreshRate < (summary.minRenderFrameRate - FLOAT_TOLERANCE)) {
if (mLoggingEnabled) {

View File

@@ -298,6 +298,18 @@ public class DisplayModeDirectorTest {
assertThat(desiredSpecs.primary.physical.min).isWithin(FLOAT_TOLERANCE).of(60);
assertThat(desiredSpecs.primary.physical.max).isWithin(FLOAT_TOLERANCE).of(60);
assertThat(desiredSpecs.baseModeId).isEqualTo(60);
votes.clear();
votes.put(Vote.PRIORITY_USER_SETTING_PEAK_RENDER_FRAME_RATE,
Vote.forRenderFrameRates(0, 60 - error));
votes.put(Vote.PRIORITY_USER_SETTING_MIN_RENDER_FRAME_RATE,
Vote.forRenderFrameRates(60 + error, Float.POSITIVE_INFINITY));
director.injectVotesByDisplay(votesByDisplay);
desiredSpecs = director.getDesiredDisplayModeSpecs(DISPLAY_ID);
assertThat(desiredSpecs.primary.render.min).isWithin(FLOAT_TOLERANCE).of(60);
assertThat(desiredSpecs.primary.render.max).isWithin(FLOAT_TOLERANCE).of(60);
assertThat(desiredSpecs.baseModeId).isEqualTo(60);
}
@Test