summaryrefslogtreecommitdiff
path: root/core/java/android/view/DisplayInfo.java
diff options
context:
space:
mode:
authorAdy Abraham <adyabr@google.com>2020-10-13 19:06:52 -0700
committerAdy Abraham <adyabr@google.com>2020-11-23 20:02:48 +0000
commit15d23d83a73397ed92ab8b97728ebd85b8a264d2 (patch)
treebbac6506cd50c453a6036f72bf27d0918fc0e273 /core/java/android/view/DisplayInfo.java
parent539bfca1c83448be68bc8b31f8fef9ff38ff0c67 (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.java25
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();
}