SF: Reset RefreshRateConfigs policy when modes change
When the display modes change the old display policy may
no longer be valid, so we need reset it. This CL also adds
a test for the broken scenario.
Bug: 159590486
Test: atest RefreshRateConfigs
Test: manually 0. device boots in 60hz mode
1. switch to 50hz from app
2. disconnect display
3. reconnect display
4. verify that SF doesn't crash
Change-Id: Ib935fb4ebce241c4771ffef75b102741e51b96c0
diff --git a/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp b/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp
index e7a44a7..a03f793 100644
--- a/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp
+++ b/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp
@@ -627,6 +627,8 @@
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();