summaryrefslogtreecommitdiff
path: root/core/java/android/view/WindowManager.java
diff options
context:
space:
mode:
authorAdy Abraham <adyabr@google.com>2021-06-29 19:25:45 -0700
committerBeverly <beverlyt@google.com>2021-06-30 11:32:26 -0400
commit540012bf1e1d9d898a9312ab24487222da366eea (patch)
treebfbbed1cc4d5cce3d95e33d43d387148081343bd /core/java/android/view/WindowManager.java
parente68668899b47b1ba00a75fc3e2737cb934b646ff (diff)
Add preferredMinDisplayRefreshRate
Add a new private window attribute for allowing apps to specify the min display refresh rate in addition to the existing preferredMaxDisplayRefreshRate. This is useful for use cases such as keyguard where the refresh rate should be limited to a single value, and using preferredDisplayModeId would not lock the display refresh rate, as frame rate override might be enabled. Test: atest RefreshRatePolicyTest FrameRateSelectionPriorityTests DisplayModeDirectorTest Bug: 183226498 Bug: 184176119 Change-Id: I343569b3cbccd73001703dca78f0f99e196a4d52
Diffstat (limited to 'core/java/android/view/WindowManager.java')
-rw-r--r--core/java/android/view/WindowManager.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 2996c3d87120..55beae0f7b3d 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -3023,6 +3023,14 @@ public interface WindowManager extends ViewManager {
public int preferredDisplayModeId;
/**
+ * The min display refresh rate while the window is in focus.
+ *
+ * This value is ignored if {@link #preferredDisplayModeId} is set.
+ * @hide
+ */
+ public float preferredMinDisplayRefreshRate;
+
+ /**
* The max display refresh rate while the window is in focus.
*
* This value is ignored if {@link #preferredDisplayModeId} is set.
@@ -3781,6 +3789,7 @@ public interface WindowManager extends ViewManager {
out.writeInt(screenOrientation);
out.writeFloat(preferredRefreshRate);
out.writeInt(preferredDisplayModeId);
+ out.writeFloat(preferredMinDisplayRefreshRate);
out.writeFloat(preferredMaxDisplayRefreshRate);
out.writeInt(systemUiVisibility);
out.writeInt(subtreeSystemUiVisibility);
@@ -3852,6 +3861,7 @@ public interface WindowManager extends ViewManager {
screenOrientation = in.readInt();
preferredRefreshRate = in.readFloat();
preferredDisplayModeId = in.readInt();
+ preferredMinDisplayRefreshRate = in.readFloat();
preferredMaxDisplayRefreshRate = in.readFloat();
systemUiVisibility = in.readInt();
subtreeSystemUiVisibility = in.readInt();
@@ -3931,7 +3941,9 @@ public interface WindowManager extends ViewManager {
/** {@hide} */
public static final int BLUR_BEHIND_RADIUS_CHANGED = 1 << 29;
/** {@hide} */
- public static final int PREFERRED_MAX_DISPLAY_REFRESH_RATE = 1 << 30;
+ public static final int PREFERRED_MIN_DISPLAY_REFRESH_RATE = 1 << 30;
+ /** {@hide} */
+ public static final int PREFERRED_MAX_DISPLAY_REFRESH_RATE = 1 << 31;
// internal buffer to backup/restore parameters under compatibility mode.
private int[] mCompatibilityParamsBackup = null;
@@ -4063,6 +4075,11 @@ public interface WindowManager extends ViewManager {
changes |= PREFERRED_DISPLAY_MODE_ID;
}
+ if (preferredMinDisplayRefreshRate != o.preferredMinDisplayRefreshRate) {
+ preferredMinDisplayRefreshRate = o.preferredMinDisplayRefreshRate;
+ changes |= PREFERRED_MIN_DISPLAY_REFRESH_RATE;
+ }
+
if (preferredMaxDisplayRefreshRate != o.preferredMaxDisplayRefreshRate) {
preferredMaxDisplayRefreshRate = o.preferredMaxDisplayRefreshRate;
changes |= PREFERRED_MAX_DISPLAY_REFRESH_RATE;
@@ -4272,6 +4289,10 @@ public interface WindowManager extends ViewManager {
sb.append(" preferredDisplayMode=");
sb.append(preferredDisplayModeId);
}
+ if (preferredMinDisplayRefreshRate != 0) {
+ sb.append(" preferredMinDisplayRefreshRate=");
+ sb.append(preferredMinDisplayRefreshRate);
+ }
if (preferredMaxDisplayRefreshRate != 0) {
sb.append(" preferredMaxDisplayRefreshRate=");
sb.append(preferredMaxDisplayRefreshRate);