Index: chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java |
index 3bdbb7277dbfd37b107a0d578a55294a664af351..ff2445bfaf82ada39ee75d22b975a8ca2ffcf0d5 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java |
@@ -6,13 +6,18 @@ package org.chromium.chrome.browser.vr_shell; |
import android.annotation.SuppressLint; |
import android.app.Activity; |
+import android.content.Context; |
import android.graphics.Point; |
import android.os.StrictMode; |
+import android.view.Choreographer; |
+import android.view.Choreographer.FrameCallback; |
+import android.view.Display; |
import android.view.MotionEvent; |
import android.view.Surface; |
import android.view.SurfaceHolder; |
import android.view.SurfaceView; |
import android.view.View; |
+import android.view.WindowManager; |
import android.widget.FrameLayout; |
import com.google.vr.ndk.base.AndroidCompat; |
@@ -172,6 +177,17 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal |
mOriginalWindowAndroid = mContentCVC.getWindowAndroid(); |
mTab.updateWindowAndroid(mContentVrWindowAndroid); |
+ |
+ Choreographer choreographer = Choreographer.getInstance(); |
+ choreographer.postFrameCallback(new FrameCallback() { |
+ @Override |
+ public void doFrame(long frameTimeNanos) { |
+ Display display = ((WindowManager) mActivity.getSystemService( |
+ Context.WINDOW_SERVICE)).getDefaultDisplay(); |
+ nativeUpdateVSyncInterval(mNativeVrShell, frameTimeNanos, |
+ 1.0d / display.getRefreshRate()); |
+ } |
+ }); |
} |
@CalledByNative |
@@ -324,4 +340,6 @@ public class VrShellImpl extends GvrLayout implements VrShell, SurfaceHolder.Cal |
float dpr); |
private native void nativeUIBoundsChanged(long nativeVrShell, int width, int height, float dpr); |
private native void nativeSetWebVrMode(long nativeVrShell, boolean enabled); |
+ private native void nativeUpdateVSyncInterval(long nativeVrShell, long timebaseNanos, |
+ double intervalSeconds); |
} |