summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jian-Syuan (Shane) Wong <shanewong@google.com> 2024-02-15 01:51:19 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-02-15 01:51:19 +0000
commit7b237a48d3550e322b9c97c1d1bd0307e1f5c48c (patch)
treea7dfc9870995e79adcb9fc219fa780805fea234b
parent0c037c2b503344f31fe74f09cc3e583848cda8da (diff)
parent17a8dbe2d3df9462e376362c03479c70870a96b9 (diff)
Merge "Update toolkit dVRR update frame rate logic" into main
-rw-r--r--core/java/android/view/ViewRootImpl.java14
-rw-r--r--core/tests/coretests/src/android/view/ViewRootImplTest.java2
2 files changed, 7 insertions, 9 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 657c8e644f3a..c5cd70f5300a 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -4085,6 +4085,7 @@ public final class ViewRootImpl implements ViewParent,
setPreferredFrameRate(mPreferredFrameRate);
setPreferredFrameRateCategory(mPreferredFrameRateCategory);
mPreferredFrameRateCategory = FRAME_RATE_CATEGORY_NO_PREFERENCE;
+ mPreferredFrameRate = -1;
}
private void createSyncIfNeeded() {
@@ -12296,7 +12297,8 @@ public final class ViewRootImpl implements ViewParent,
}
try {
- if (mLastPreferredFrameRate != preferredFrameRate) {
+ if (mLastPreferredFrameRate != preferredFrameRate
+ && preferredFrameRate >= 0) {
if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) {
Trace.traceBegin(
Trace.TRACE_TAG_VIEW, "ViewRootImpl#setFrameRate "
@@ -12368,13 +12370,7 @@ public final class ViewRootImpl implements ViewParent,
return;
}
- if (mPreferredFrameRate == 0) {
- mPreferredFrameRate = frameRate;
- } else if (frameRate > 60 || mPreferredFrameRate > 60) {
- mPreferredFrameRate = Math.max(mPreferredFrameRate, frameRate);
- } else if (mPreferredFrameRate != frameRate) {
- mPreferredFrameRate = 60;
- }
+ mPreferredFrameRate = Math.max(mPreferredFrameRate, frameRate);
mHasInvalidation = true;
mHandler.removeMessages(MSG_FRAME_RATE_SETTING);
@@ -12403,7 +12399,7 @@ public final class ViewRootImpl implements ViewParent,
*/
@VisibleForTesting
public float getPreferredFrameRate() {
- return mPreferredFrameRate;
+ return mPreferredFrameRate >= 0 ? mPreferredFrameRate : mLastPreferredFrameRate;
}
/**
diff --git a/core/tests/coretests/src/android/view/ViewRootImplTest.java b/core/tests/coretests/src/android/view/ViewRootImplTest.java
index 0657e4b9c619..36c7f5478e47 100644
--- a/core/tests/coretests/src/android/view/ViewRootImplTest.java
+++ b/core/tests/coretests/src/android/view/ViewRootImplTest.java
@@ -699,6 +699,8 @@ public class ViewRootImplTest {
viewRootImpl.votePreferredFrameRate(24);
assertEquals(viewRootImpl.getPreferredFrameRate(), 24, 0.1);
viewRootImpl.votePreferredFrameRate(30);
+ assertEquals(viewRootImpl.getPreferredFrameRate(), 30, 0.1);
+ viewRootImpl.votePreferredFrameRate(60);
assertEquals(viewRootImpl.getPreferredFrameRate(), 60, 0.1);
viewRootImpl.votePreferredFrameRate(120);
assertEquals(viewRootImpl.getPreferredFrameRate(), 120, 0.1);