diff options
| author | 2024-02-15 01:51:19 +0000 | |
|---|---|---|
| committer | 2024-02-15 01:51:19 +0000 | |
| commit | 7b237a48d3550e322b9c97c1d1bd0307e1f5c48c (patch) | |
| tree | a7dfc9870995e79adcb9fc219fa780805fea234b | |
| parent | 0c037c2b503344f31fe74f09cc3e583848cda8da (diff) | |
| parent | 17a8dbe2d3df9462e376362c03479c70870a96b9 (diff) | |
Merge "Update toolkit dVRR update frame rate logic" into main
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 14 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/view/ViewRootImplTest.java | 2 |
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); |