SF: move RefreshRateConfigs to DisplayDevice
Move RefreshRateConfigs to DisplayDevice to be able to maintain
a per-display refresh rate switching policy.
Test: SF unit tests
Test: refresh rate switching is working on device with
more than one display
Bug: 187539899
Change-Id: Ica6a955e8ad0e563a0740f6579b61fc592eb982c
diff --git a/services/surfaceflinger/RefreshRateOverlay.cpp b/services/surfaceflinger/RefreshRateOverlay.cpp
index 9cfc37d..9657a9f 100644
--- a/services/surfaceflinger/RefreshRateOverlay.cpp
+++ b/services/surfaceflinger/RefreshRateOverlay.cpp
@@ -283,7 +283,16 @@
void RefreshRateOverlay::reset() {
mBufferCache.clear();
- const auto range = mFlinger.mRefreshRateConfigs->getSupportedRefreshRateRange();
+ // TODO: this is a temp hack that would be removed in the next CL
+ const auto range = [&]() NO_THREAD_SAFETY_ANALYSIS {
+ constexpr auto defaultFps = Fps(60);
+ const auto display = mFlinger.getDefaultDisplayDeviceLocked();
+ if (display) {
+ return display->refreshRateConfigs().getSupportedRefreshRateRange();
+ }
+ ALOGW("%s: default display is null", __func__);
+ return scheduler::RefreshRateConfigs::FpsRange{defaultFps, defaultFps};
+ }();
mLowFps = range.min.getIntValue();
mHighFps = range.max.getIntValue();
}