summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp')
-rw-r--r--services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp b/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp
index d128fefda9..2fc48754e9 100644
--- a/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp
+++ b/services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp
@@ -467,7 +467,14 @@ auto RefreshRateConfigs::getBestRefreshRateLocked(const std::vector<LayerRequire
? getMaxScoreRefreshRate(scores.rbegin(), scores.rend())
: getMaxScoreRefreshRate(scores.begin(), scores.end());
- if (primaryRangeIsSingleRate) {
+ bool noFpsScored = std::all_of(scores.begin(), scores.end(),
+ [](RefreshRateScore score) { return score.score == 0; });
+ if (noFpsScored) {
+ ALOGV("No fps scored - choose %s", to_string(mActiveModeIt->second->getFps()).c_str());
+ return {mActiveModeIt->second, kNoSignals};
+ }
+
+ if (primaryRangeIsSingleRate) {
// If we never scored any layers, then choose the rate from the primary
// range instead of picking a random score from the app range.
if (std::all_of(scores.begin(), scores.end(),