diff options
| author | Ady Abraham <adyabr@google.com> | 2020-10-13 19:06:52 -0700 |
|---|---|---|
| committer | Ady Abraham <adyabr@google.com> | 2020-11-23 20:02:48 +0000 |
| commit | 15d23d83a73397ed92ab8b97728ebd85b8a264d2 (patch) | |
| tree | bbac6506cd50c453a6036f72bf27d0918fc0e273 /core/java/android/view/DisplayInfo.java | |
| parent | 539bfca1c83448be68bc8b31f8fef9ff38ff0c67 (diff) | |
Handle DISPLAY_EVENT_FRAME_RATE_OVERRIDE
When getting DISPLAY_EVENT_FRAME_RATE_OVERRIDE from SurfaceFlinger,
expose the overridden frame rate to the relevant application
if the current refresh rate allows that.
Bug: 169271059
Bug: 169271062
Bug: 170503758
Test: manual test using SF backdoor
adb shell service call SurfaceFlinger 1039 i32 <uid> f <refresh rate>
Change-Id: I6ae1a98e6ca13e9d3d095a5713a6b0ca99652256
Diffstat (limited to 'core/java/android/view/DisplayInfo.java')
| -rw-r--r-- | core/java/android/view/DisplayInfo.java | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/core/java/android/view/DisplayInfo.java b/core/java/android/view/DisplayInfo.java index fe9a1a76bbaf..020160584f67 100644 --- a/core/java/android/view/DisplayInfo.java +++ b/core/java/android/view/DisplayInfo.java @@ -261,6 +261,11 @@ public final class DisplayInfo implements Parcelable { public String ownerPackageName; /** + * The refresh rate override for this app. 0 means no override. + */ + public float refreshRateOverride; + + /** * @hide * Get current remove mode of the display - what actions should be performed with the display's * content when it is removed. @@ -332,7 +337,8 @@ public final class DisplayInfo implements Parcelable { && state == other.state && ownerUid == other.ownerUid && Objects.equals(ownerPackageName, other.ownerPackageName) - && removeMode == other.removeMode; + && removeMode == other.removeMode + && refreshRateOverride == other.refreshRateOverride; } @Override @@ -376,6 +382,7 @@ public final class DisplayInfo implements Parcelable { ownerUid = other.ownerUid; ownerPackageName = other.ownerPackageName; removeMode = other.removeMode; + refreshRateOverride = other.refreshRateOverride; } public void readFromParcel(Parcel source) { @@ -421,6 +428,7 @@ public final class DisplayInfo implements Parcelable { ownerPackageName = source.readString8(); uniqueId = source.readString8(); removeMode = source.readInt(); + refreshRateOverride = source.readFloat(); } @Override @@ -465,6 +473,7 @@ public final class DisplayInfo implements Parcelable { dest.writeString8(ownerPackageName); dest.writeString8(uniqueId); dest.writeInt(removeMode); + dest.writeFloat(refreshRateOverride); } @Override @@ -472,6 +481,17 @@ public final class DisplayInfo implements Parcelable { return 0; } + /** + * Returns the refresh rate the application would experience. + */ + public float getRefreshRate() { + if (refreshRateOverride > 0) { + return refreshRateOverride; + } + + return getMode().getRefreshRate(); + } + public Display.Mode getMode() { return findMode(modeId); } @@ -675,6 +695,9 @@ public final class DisplayInfo implements Parcelable { } sb.append(", removeMode "); sb.append(removeMode); + sb.append(", refreshRateOverride "); + sb.append(refreshRateOverride); + sb.append("}"); return sb.toString(); } |
