diff options
author | Ady Abraham <adyabr@google.com> | 2019-09-06 13:05:40 -0700 |
---|---|---|
committer | Ady Abraham <adyabr@google.com> | 2019-09-07 00:05:36 +0000 |
commit | 7e5db1d14650b8901e6e9c5157c6dd4a6711023f (patch) | |
tree | d5dd7ddefbbb57c73da7bb34b1ce96936e349041 | |
parent | d6536aa908a82d909b99d81012fd3b258faf0d84 (diff) | |
download | native-7e5db1d14650b8901e6e9c5157c6dd4a6711023f.tar.gz |
SurfaceFlinger: do not choose POWER_SAVING as refresh rate
Skip POWER_SAVING when looking for a content based refresh rate
as it is not a real config.
Test: Play 29fps video
Bug: 140374873
Change-Id: Ia1be8b849e4ad3c59fdff084f2394e52bdb3828c
Merged-In: Ia1be8b849e4ad3c59fdff084f2394e52bdb3828c
-rw-r--r-- | services/surfaceflinger/Scheduler/Scheduler.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/services/surfaceflinger/Scheduler/Scheduler.cpp b/services/surfaceflinger/Scheduler/Scheduler.cpp index a194106112..baa677ee2a 100644 --- a/services/surfaceflinger/Scheduler/Scheduler.cpp +++ b/services/surfaceflinger/Scheduler/Scheduler.cpp @@ -567,8 +567,13 @@ Scheduler::RefreshRateType Scheduler::calculateRefreshRateType() { } // Content detection is on, find the appropriate refresh rate with minimal error - auto iter = min_element(mRefreshRateConfigs.getRefreshRates().cbegin(), - mRefreshRateConfigs.getRefreshRates().cend(), + auto begin = mRefreshRateConfigs.getRefreshRates().cbegin(); + + // Skip POWER_SAVING config as it is not a real config + if (begin->first == RefreshRateType::POWER_SAVING) { + ++begin; + } + auto iter = min_element(begin, mRefreshRateConfigs.getRefreshRates().cend(), [rate = mContentRefreshRate](const auto& l, const auto& r) -> bool { return std::abs(l.second->fps - static_cast<float>(rate)) < std::abs(r.second->fps - static_cast<float>(rate)); |