diff options
| author | Ady Abraham <adyabr@google.com> | 2021-06-29 19:25:45 -0700 |
|---|---|---|
| committer | Beverly <beverlyt@google.com> | 2021-06-30 11:32:26 -0400 |
| commit | 540012bf1e1d9d898a9312ab24487222da366eea (patch) | |
| tree | bfbbed1cc4d5cce3d95e33d43d387148081343bd /core/java/android/view/WindowManager.java | |
| parent | e68668899b47b1ba00a75fc3e2737cb934b646ff (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.java | 23 |
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); |
