Set mPeakRefreshRate in the preference controllers to the highest refresh rate among all the modes of all the displays. It'll then be used to determine two things:
- if the setting is available
- the summary of the setting
This should only be done if the back up smooth display feature flag is enabled. If it's disabled, mPeakRefreshRate is passed to DisplayModeDirector and used for the votes. If the highest refresh rate of one display is 120 and that of the other is 130, we shouldn't set the vote to 130 for both displays. With the flag enabled, DisplayModeDirector figures out the highest refresh rate for each display.
Bug: 310238382
Test: atest PeakRefreshRatePreferenceControllerTest
Test: atest ForcePeakRefreshRatePreferenceControllerTest
Test: atest RefreshRateSettingsUtilsTest
Change-Id: I369927ba22df70958178505d8fc7c5747aaa8fdd
In the previous CL (ag/24838636), we decided to back up Smooth Display and Force Peak Refresh Rate even if the feature flag is off and then just convert the value in DisplayModeDirector based on the state of the feature flag. This was because it wasn't clear how to access the feature flag from the Settings module. This resulted in the feature partially working if the flag is off.
Bug: 313021502
Test: atest DisplayModeDirectorTest
Test: atest ForcePeakRefreshRatePreferenceControllerTest
Test: atest PeakRefreshRatePreferenceControllerTest
Test: atest SettingsBackupAgentTest
Test: atest SettingsBackupTest
Test: atest SettingsValidatorsTest
Change-Id: I3406bc5c5f49fe6102cdfe6934813a9c4073ac6f
To ensure accurate comparison of peak refresh rates, it is essential
to consider the peak refresh rate after rounding. This eliminates the
risk of unexpected triggers that could activate the Smooth Display
settings UI.
Bug: 312121651
Test: check the settings with Smooth Display
Change-Id: I4cd68efbcf4fdb9d4664c96332901661a23f4f09
It's possible that in the future the peak refresh rate setting will have multiple values (e.g. 90, 120). For that reason, we shouldn't convert it to a boolean like in the previous CLs (ag/24604787, ag/24604847).
- set peak/min refresh rate to infinity if it's the highest refresh rate so that when we restore the setting on another device, we also choose the highest refresh rate
- back up peak/min refresh rate and add validators
- upgrade settings in SettingsProvider
- create a utils class - RefreshRateSettingsUtils
Bug: 211737588
Test: atest DisplayModeDirectorTest
Test: atest ForcePeakRefreshRatePreferenceControllerTest
Test: atest PeakRefreshRatePreferenceControllerTest
Test: atest SettingsBackupTest
Test: atest SettingsProviderTest
Test: atest RefreshRateSettingsUtilsTest
Change-Id: Ie1d8cfc76e42c7d98c4a36743463ccaf3ca5d483
- Convert "Smooth display" and "Force peak refresh rate" to a boolean. If they are a boolean, they can be backed up without being device-specific.
- Back up "Smooth display" and add a validator
- Upgrade the settings in SettingsProvider
- Create a utils class - RefreshRateSettingsUtils
Bug: 211737588
Test: atest DisplayModeDirectorTest
Test: atest ForcePeakRefreshRatePreferenceControllerTest
Test: atest PeakRefreshRatePreferenceControllerTest
Test: atest SettingsBackupTest
Test: atest SettingsProviderTest
Change-Id: Ib2cb2dd100f06f5452083b7606109a486e795a0e
This should not be static, devices can launch with various
max refresh rates. Without this commit, you would need
to manually change the string for the summary
to be accurate.
Test: mm
Change-Id: I6f06fd5ebd57d7069a3d76e555950558a3edc48e
The peak refresh rate will not be guaranteed to be integer, but
config_defaultPeakRefreshRate only takes integer into the comparison.
To expose the smooth display is enabled by default in Settings, the
patch corrects the check of peak refresh rate with proper rounding.
Bug: 185102566
Test: Enable smooth display by default in Settings
Change-Id: I658ce22cf0b0a108c4b721e3e5320caf9c379639
Currently we will get an arbitrary value that is greater than the
default depending on the order returned by the Display.
Bug: 180723012
Test: make RunSettingsRoboTests
ROBOTEST_FILTER="com.android.settings.display.PeakRefreshRatePreferenceControllerTest"
Change-Id: Id2c99f2bea9c6b2814d82a9db3a417e4a93ee06d
The controller can't be created when Settings Search gets the
non-indexable keys. So Settings Search can't get the correct value
from it.
The controller creates the Handler without the parameter in constructor
and causes the exception. It should use the main Looper of Context as
the parameter to create the Handler.
Fixes: 160179400
Test: run robotest and observe the search result
Change-Id: I6f9bf6de087ae776e8d531ff59d28966aee96b7b