summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Marin Shalamanov <shalamanov@google.com> 2020-11-05 12:05:34 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-11-05 12:05:34 +0000
commit9a19e45b20bd28466985c1ef634caa1e82bc69e3 (patch)
tree310bd9b5c9e959681f960fedbd10f77d9f2300ee
parentd0fb8ca8aa475058e467ef21567a11fb9d74a76f (diff)
parent99aa6e7fe0f53429df87b97d845d11339ab5aab3 (diff)
Merge "Add flag for match content frame rate"
-rw-r--r--core/java/android/provider/Settings.java17
-rw-r--r--packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java1
-rw-r--r--packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java3
-rw-r--r--services/core/java/com/android/server/display/DisplayModeDirector.java18
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);