diff options
| -rw-r--r-- | services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp | 2 | ||||
| -rw-r--r-- | services/surfaceflinger/tests/unittests/RefreshRateConfigsTest.cpp | 20 |
2 files changed, 22 insertions, 0 deletions
diff --git a/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp b/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp index e7a44a70d5..a03f79384e 100644 --- a/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp +++ b/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp @@ -627,6 +627,8 @@ void RefreshRateConfigs::updateDisplayModes(const DisplayModes& modes, std::vector<const RefreshRate*> sortedModes; getSortedRefreshRateListLocked([](const RefreshRate&) { return true; }, &sortedModes); + // Reset the policy because the old one may no longer be valid. + mDisplayManagerPolicy = {}; mDisplayManagerPolicy.defaultMode = currentModeId; mMinSupportedRefreshRate = sortedModes.front(); mMaxSupportedRefreshRate = sortedModes.back(); diff --git a/services/surfaceflinger/tests/unittests/RefreshRateConfigsTest.cpp b/services/surfaceflinger/tests/unittests/RefreshRateConfigsTest.cpp index 376995f79e..06f2036615 100644 --- a/services/surfaceflinger/tests/unittests/RefreshRateConfigsTest.cpp +++ b/services/surfaceflinger/tests/unittests/RefreshRateConfigsTest.cpp @@ -1792,6 +1792,26 @@ TEST_F(RefreshRateConfigsTest, getFrameRateOverrides_touch) { ASSERT_TRUE(frameRateOverrides.empty()); } +TEST_F(RefreshRateConfigsTest, updateDisplayModes) { + auto refreshRateConfigs = + std::make_unique<RefreshRateConfigs>(m30_60_72_90_120Device, + /*currentConfigId=*/HWC_CONFIG_ID_30); + refreshRateConfigs->setDisplayManagerPolicy({DisplayModeId(HWC_CONFIG_ID_30), + /* allowGroupSwitching */ false, + /* range */ {Fps(30.0f), Fps(30.0f)}}); + + refreshRateConfigs->updateDisplayModes(m60_90Device, HWC_CONFIG_ID_60); + + const auto currentRefreshRate = refreshRateConfigs->getCurrentRefreshRate(); + EXPECT_TRUE(currentRefreshRate.getFps().equalsWithMargin(Fps(60.0))); + EXPECT_EQ(currentRefreshRate.getModeId(), HWC_CONFIG_ID_60); + + EXPECT_TRUE( + getMaxSupportedRefreshRate(*refreshRateConfigs).getFps().equalsWithMargin(Fps(90.0))); + EXPECT_TRUE( + getMinSupportedRefreshRate(*refreshRateConfigs).getFps().equalsWithMargin(Fps(60.0))); +} + } // namespace } // namespace scheduler } // namespace android |