| Index: ui/android/java/src/org/chromium/ui/VSyncMonitor.java
|
| diff --git a/ui/android/java/src/org/chromium/ui/VSyncMonitor.java b/ui/android/java/src/org/chromium/ui/VSyncMonitor.java
|
| index 0396135687390d44800967eec5e0b901c357820a..281ed143c3f9299d42878f97486f7119d7292708 100644
|
| --- a/ui/android/java/src/org/chromium/ui/VSyncMonitor.java
|
| +++ b/ui/android/java/src/org/chromium/ui/VSyncMonitor.java
|
| @@ -51,8 +51,6 @@ public class VSyncMonitor {
|
| // If the monitor is activated after having been idle, we synthesize the first vsync to reduce
|
| // latency.
|
| private final Handler mHandler = new Handler();
|
| - private final Runnable mSyntheticVSyncRunnable;
|
| - private long mLastVSyncCpuTimeNano;
|
|
|
| /**
|
| * Constructs a VSyncMonitor
|
| @@ -73,7 +71,6 @@ public class VSyncMonitor {
|
| @Override
|
| public void doFrame(long frameTimeNanos) {
|
| TraceEvent.begin("VSync");
|
| - mHandler.removeCallbacks(mSyntheticVSyncRunnable);
|
| if (useEstimatedRefreshPeriod && mConsecutiveVSync) {
|
| // Display.getRefreshRate() is unreliable on some platforms.
|
| // Adjust refresh period- initial value is based on Display.getRefreshRate()
|
| @@ -88,16 +85,6 @@ public class VSyncMonitor {
|
| TraceEvent.end("VSync");
|
| }
|
| };
|
| - mSyntheticVSyncRunnable = new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - TraceEvent.begin("VSyncSynthetic");
|
| - mChoreographer.removeFrameCallback(mVSyncFrameCallback);
|
| - final long currentTime = getCurrentNanoTime();
|
| - onVSyncCallback(estimateLastVSyncTime(currentTime), currentTime);
|
| - TraceEvent.end("VSyncSynthetic");
|
| - }
|
| - };
|
| mGoodStartingPointNano = getCurrentNanoTime();
|
| }
|
|
|
| @@ -137,7 +124,6 @@ public class VSyncMonitor {
|
| assert mHaveRequestInFlight;
|
| mInsideVSync = true;
|
| mHaveRequestInFlight = false;
|
| - mLastVSyncCpuTimeNano = currentTimeNanos;
|
| try {
|
| if (mListener != null) {
|
| mListener.onVSync(this, frameTimeNanos / NANOSECONDS_PER_MICROSECOND);
|
| @@ -151,31 +137,6 @@ public class VSyncMonitor {
|
| if (mHaveRequestInFlight) return;
|
| mHaveRequestInFlight = true;
|
| mConsecutiveVSync = mInsideVSync;
|
| - // There's no way to tell if we're currently in the scope of a
|
| - // choregrapher frame callback, which might in turn allow us to honor
|
| - // the vsync callback in the current frame. Thus, we eagerly post the
|
| - // frame callback even when we post a synthetic frame callback. If the
|
| - // frame callback is honored before the synthetic callback, we simply
|
| - // remove the synthetic callback.
|
| - postSyntheticVSyncIfNecessary();
|
| mChoreographer.postFrameCallback(mVSyncFrameCallback);
|
| }
|
| -
|
| - private void postSyntheticVSyncIfNecessary() {
|
| - // TODO(jdduke): Consider removing synthetic vsyncs altogether if
|
| - // they're found to be no longer necessary.
|
| - final long currentTime = getCurrentNanoTime();
|
| - // Only trigger a synthetic vsync if we've been idle for long enough and the upcoming real
|
| - // vsync is more than half a frame away.
|
| - if (currentTime - mLastVSyncCpuTimeNano < 2 * mRefreshPeriodNano) return;
|
| - if (currentTime - estimateLastVSyncTime(currentTime) > mRefreshPeriodNano / 2) return;
|
| - mHandler.post(mSyntheticVSyncRunnable);
|
| - }
|
| -
|
| - private long estimateLastVSyncTime(long currentTime) {
|
| - final long lastRefreshTime = mGoodStartingPointNano
|
| - + ((currentTime - mGoodStartingPointNano) / mRefreshPeriodNano)
|
| - * mRefreshPeriodNano;
|
| - return lastRefreshTime;
|
| - }
|
| }
|
|
|