summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);