diff options
| author | 2020-11-05 12:05:34 +0000 | |
|---|---|---|
| committer | 2020-11-05 12:05:34 +0000 | |
| commit | 9a19e45b20bd28466985c1ef634caa1e82bc69e3 (patch) | |
| tree | 310bd9b5c9e959681f960fedbd10f77d9f2300ee | |
| parent | d0fb8ca8aa475058e467ef21567a11fb9d74a76f (diff) | |
| parent | 99aa6e7fe0f53429df87b97d845d11339ab5aab3 (diff) | |
Merge "Add flag for match content frame rate"
4 files changed, 38 insertions, 1 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index f31e70a87169..d22b62b06ba4 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -7761,6 +7761,21 @@ public final class Settings { "minimal_post_processing_allowed"; /** + * User's preference for refresh rate switching. + * + * <p>Values: + * 0 - Never switch refresh rates. + * 1 - Switch refresh rates only when it can be done seamlessly. (Default behaviour) + * 2 - Always prefer refresh rate switching even if it's going to have visual interruptions + * for the user. + * + * @see android.view.Surface#setFrameRate + * @hide + */ + public static final String MATCH_CONTENT_FRAME_RATE = + "match_content_frame_rate"; + + /** * INCALL_POWER_BUTTON_BEHAVIOR value for "turn off screen". * @hide */ @@ -10708,7 +10723,7 @@ public final class Settings { * 0 = Disabled * 1 = Enabled * - * Most readers of this setting should simply check if value == 1 to determined the + * Most readers of this setting should simply check if value == 1 to determine the * enabled state. * @hide * @deprecated To be removed. diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java index b9e30fb950c6..ffbc7f4cecf3 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java @@ -89,6 +89,7 @@ public class SecureSettings { Settings.Secure.RTT_CALLING_MODE, Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR, Settings.Secure.MINIMAL_POST_PROCESSING_ALLOWED, + Settings.Secure.MATCH_CONTENT_FRAME_RATE, Settings.Secure.NIGHT_DISPLAY_CUSTOM_START_TIME, Settings.Secure.NIGHT_DISPLAY_CUSTOM_END_TIME, Settings.Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE, diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java index 721bf730a343..46c42fc8fdd6 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java @@ -135,6 +135,9 @@ public class SecureSettingsValidators { Secure.INCALL_POWER_BUTTON_BEHAVIOR, new DiscreteValueValidator(new String[] {"1", "2"})); VALIDATORS.put(Secure.MINIMAL_POST_PROCESSING_ALLOWED, BOOLEAN_VALIDATOR); + VALIDATORS.put( + Secure.MATCH_CONTENT_FRAME_RATE, + new DiscreteValueValidator(new String[] {"0", "1", "2"})); VALIDATORS.put(Secure.NIGHT_DISPLAY_CUSTOM_START_TIME, NON_NEGATIVE_INTEGER_VALIDATOR); VALIDATORS.put(Secure.NIGHT_DISPLAY_CUSTOM_END_TIME, NON_NEGATIVE_INTEGER_VALIDATOR); VALIDATORS.put(Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE, NON_NEGATIVE_INTEGER_VALIDATOR); diff --git a/services/core/java/com/android/server/display/DisplayModeDirector.java b/services/core/java/com/android/server/display/DisplayModeDirector.java index c013145b5269..1aced07e0997 100644 --- a/services/core/java/com/android/server/display/DisplayModeDirector.java +++ b/services/core/java/com/android/server/display/DisplayModeDirector.java @@ -931,6 +931,8 @@ public class DisplayModeDirector { Settings.System.getUriFor(Settings.System.MIN_REFRESH_RATE); private final Uri mLowPowerModeSetting = Settings.Global.getUriFor(Settings.Global.LOW_POWER_MODE); + private final Uri mMatchContentFrameRateSetting = + Settings.Secure.getUriFor(Settings.Secure.MATCH_CONTENT_FRAME_RATE); private final Context mContext; private float mDefaultPeakRefreshRate; @@ -953,6 +955,8 @@ public class DisplayModeDirector { UserHandle.USER_SYSTEM); cr.registerContentObserver(mLowPowerModeSetting, false /*notifyDescendants*/, this, UserHandle.USER_SYSTEM); + cr.registerContentObserver(mMatchContentFrameRateSetting, false /*notifyDescendants*/, + this); Float deviceConfigDefaultPeakRefresh = mDeviceConfigDisplaySettings.getDefaultPeakRefreshRate(); @@ -963,6 +967,7 @@ public class DisplayModeDirector { synchronized (mLock) { updateRefreshRateSettingLocked(); updateLowPowerModeSettingLocked(); + updateModeSwitchingTypeSettingLocked(); } } @@ -988,6 +993,8 @@ public class DisplayModeDirector { updateRefreshRateSettingLocked(); } else if (mLowPowerModeSetting.equals(uri)) { updateLowPowerModeSettingLocked(); + } else if (mMatchContentFrameRateSetting.equals(uri)) { + updateModeSwitchingTypeSettingLocked(); } } } @@ -1050,6 +1057,17 @@ public class DisplayModeDirector { mBrightnessObserver.onRefreshRateSettingChangedLocked(minRefreshRate, maxRefreshRate); } + private void updateModeSwitchingTypeSettingLocked() { + final ContentResolver cr = mContext.getContentResolver(); + int switchingType = Settings.Secure.getIntForUser( + cr, Settings.Secure.MATCH_CONTENT_FRAME_RATE, mModeSwitchingType /*default*/, + cr.getUserId()); + if (switchingType != mModeSwitchingType) { + mModeSwitchingType = switchingType; + notifyDesiredDisplayModeSpecsChangedLocked(); + } + } + public void dumpLocked(PrintWriter pw) { pw.println(" SettingsObserver"); pw.println(" mDefaultRefreshRate: " + mDefaultRefreshRate); |