Index: chrome/browser/android/vr_shell/vr_shell.h |
diff --git a/chrome/browser/android/vr_shell/vr_shell.h b/chrome/browser/android/vr_shell/vr_shell.h |
index 56b69dd659f377e3a73299d88845912b6b0aa24c..f8f935410a58e7e89541512b0f9413375f82bdae 100644 |
--- a/chrome/browser/android/vr_shell/vr_shell.h |
+++ b/chrome/browser/android/vr_shell/vr_shell.h |
@@ -73,6 +73,7 @@ class VrShell : public device::GvrDelegate { |
void UpdateWebVRTextureBounds( |
int eye, float left, float top, float width, float height) override; |
gvr::GvrApi* gvr_api() override; |
+ void SetGvrPoseForWebVr(gvr::Mat4f pose, uint32_t pose_num) override; |
void ContentSurfaceChanged( |
JNIEnv* env, |
@@ -156,6 +157,12 @@ class VrShell : public device::GvrDelegate { |
bool webvr_mode_ = false; |
bool webvr_secure_origin_ = false; |
int64_t webvr_warning_end_nanos_ = 0; |
+ // The pose queue size must be a power of two to avoid glitches when |
+ // the pose counter wraps around. Should be large enough to handle |
+ // the current backlog of poses which is 2-3 frames. |
+ static constexpr int POSE_QUEUE_SIZE = 8; |
+ gvr::Mat4f webvr_head_pose_[POSE_QUEUE_SIZE]; |
+ int32_t webvr_newest_pose_num_ = 0; |
base::WeakPtrFactory<VrShell> weak_ptr_factory_; |