Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(878)

Unified Diff: ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java

Issue 1910803002: Do not send bogus vsync refresh information. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java
diff --git a/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java b/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java
index 6f83d87a136f524dbdf7db8f4a7673c5a76bfd09..31cc62af204d143b13f0d76e9b23207889397f16 100644
--- a/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java
+++ b/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java
@@ -19,6 +19,8 @@ public class VSyncProvider implements FrameCallback {
private static final long MAX_DRIFT_PERCENT = 5;
// A refresh period of more than 1s is considered bogus.
private static final long MAX_VSYNC_REFRESH_NANO = 1000000000L;
+ // A refresh period bigger than 1000Hz is considered bogus.
+ private static final long MIN_VSYNC_REFRESH_NANO = 1000000L;
private final Choreographer mChoreographer;
private boolean mMonitoring;
private long mNativeAndroidVSyncProvider;
@@ -53,7 +55,7 @@ public class VSyncProvider implements FrameCallback {
}
@Override
- public void doFrame(long timeNano) {
+ public void doFrame(final long timeNano) {
if (mNativeAndroidVSyncProvider == 0) {
mMonitoring = false;
return;
@@ -65,25 +67,25 @@ public class VSyncProvider implements FrameCallback {
}
mChoreographer.postFrameCallback(this);
- long currentTimeNano = timeNano;
if (mLastTimeNano != 0) {
- long currentRefreshNano = currentTimeNano - mLastTimeNano;
- if (currentRefreshNano < MAX_VSYNC_REFRESH_NANO) {
+ long currentRefreshNano = timeNano - mLastTimeNano;
+ if (currentRefreshNano > MIN_VSYNC_REFRESH_NANO
+ && currentRefreshNano < MAX_VSYNC_REFRESH_NANO) {
mVSyncRefreshNanoComputer.add(currentRefreshNano);
if (mLastSentTimeSynchronizationNano == 0
- || computeSynchronizationDriftPercent(currentTimeNano,
+ || computeSynchronizationDriftPercent(timeNano,
mLastSentTimeSynchronizationNano, mLastSentVSyncRefreshNano)
> MAX_DRIFT_PERCENT
|| computeRefreshDriftPercent(currentRefreshNano, mLastSentVSyncRefreshNano)
> MAX_DRIFT_PERCENT) {
- mLastSentTimeSynchronizationNano = currentTimeNano;
+ mLastSentTimeSynchronizationNano = timeNano;
mLastSentVSyncRefreshNano = mVSyncRefreshNanoComputer.getMedian();
- nativeOnSyncChanged(mNativeAndroidVSyncProvider, currentTimeNano / 1000,
+ nativeOnSyncChanged(mNativeAndroidVSyncProvider, timeNano / 1000,
mLastSentVSyncRefreshNano / 1000);
}
}
}
- mLastTimeNano = currentTimeNano;
+ mLastTimeNano = timeNano;
}
@CalledByNative
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698