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

Side by Side Diff: chrome/browser/android/vr_shell/vr_shell.cc

Issue 2612333002: Allow VRDisplay to specify which frame the layer bounds should be updated at. (Closed)
Patch Set: rebase + address comments Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/vr_shell/vr_shell.h" 5 #include "chrome/browser/android/vr_shell/vr_shell.h"
6 6
7 #include <android/native_window_jni.h> 7 #include <android/native_window_jni.h>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 return {size.width(), size.height()}; 247 return {size.width(), size.height()};
248 } 248 }
249 249
250 void VrShell::SetWebVRSecureOrigin(bool secure_origin) { 250 void VrShell::SetWebVRSecureOrigin(bool secure_origin) {
251 // TODO(cjgrant): Align this state with the logic that drives the omnibox. 251 // TODO(cjgrant): Align this state with the logic that drives the omnibox.
252 html_interface_->SetWebVRSecureOrigin(secure_origin); 252 html_interface_->SetWebVRSecureOrigin(secure_origin);
253 } 253 }
254 254
255 void VrShell::SubmitWebVRFrame() {} 255 void VrShell::SubmitWebVRFrame() {}
256 256
257 void VrShell::UpdateWebVRTextureBounds(const gvr::Rectf& left_bounds, 257 void VrShell::UpdateWebVRTextureBounds(int16_t frame_index,
258 const gvr::Rectf& left_bounds,
258 const gvr::Rectf& right_bounds) { 259 const gvr::Rectf& right_bounds) {
259 PostToGlThreadWhenReady(base::Bind(&VrShellGl::UpdateWebVRTextureBounds, 260 PostToGlThreadWhenReady(base::Bind(&VrShellGl::UpdateWebVRTextureBounds,
260 gl_thread_->GetVrShellGl(), left_bounds, 261 gl_thread_->GetVrShellGl(), frame_index,
261 right_bounds)); 262 left_bounds, right_bounds));
262 } 263 }
263 264
264 // TODO(mthiesse): Do not expose GVR API outside of GL thread. 265 // TODO(mthiesse): Do not expose GVR API outside of GL thread.
265 // It's not thread-safe. 266 // It's not thread-safe.
266 gvr::GvrApi* VrShell::gvr_api() { 267 gvr::GvrApi* VrShell::gvr_api() {
267 if (gl_thread_->GetVrShellGlUnsafe()) { 268 if (gl_thread_->GetVrShellGlUnsafe()) {
268 return gl_thread_->GetVrShellGlUnsafe()->gvr_api(); 269 return gl_thread_->GetVrShellGlUnsafe()->gvr_api();
269 } 270 }
270 CHECK(false); 271 CHECK(false);
271 return nullptr; 272 return nullptr;
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 442
442 } 443 }
443 444
444 void VrShell::ProcessContentGesture( 445 void VrShell::ProcessContentGesture(
445 std::unique_ptr<blink::WebInputEvent> event) { 446 std::unique_ptr<blink::WebInputEvent> event) {
446 if (content_input_manager_) { 447 if (content_input_manager_) {
447 content_input_manager_->ProcessUpdatedGesture(std::move(event)); 448 content_input_manager_->ProcessUpdatedGesture(std::move(event));
448 } 449 }
449 } 450 }
450 451
451 device::mojom::VRPosePtr VrShell::VRPosePtrFromGvrPose(gvr::Mat4f head_mat, 452 device::mojom::VRPosePtr VrShell::VRPosePtrFromGvrPose(gvr::Mat4f head_mat) {
452 uint32_t pose_index) {
453 device::mojom::VRPosePtr pose = device::mojom::VRPose::New(); 453 device::mojom::VRPosePtr pose = device::mojom::VRPose::New();
454 454
455 pose->timestamp = base::Time::Now().ToJsTime(); 455 pose->timestamp = base::Time::Now().ToJsTime();
456
457 pose->poseIndex = pose_index;
458 pose->orientation.emplace(4); 456 pose->orientation.emplace(4);
459 457
460 gfx::Transform inv_transform( 458 gfx::Transform inv_transform(
461 head_mat.m[0][0], head_mat.m[0][1], head_mat.m[0][2], head_mat.m[0][3], 459 head_mat.m[0][0], head_mat.m[0][1], head_mat.m[0][2], head_mat.m[0][3],
462 head_mat.m[1][0], head_mat.m[1][1], head_mat.m[1][2], head_mat.m[1][3], 460 head_mat.m[1][0], head_mat.m[1][1], head_mat.m[1][2], head_mat.m[1][3],
463 head_mat.m[2][0], head_mat.m[2][1], head_mat.m[2][2], head_mat.m[2][3], 461 head_mat.m[2][0], head_mat.m[2][1], head_mat.m[2][2], head_mat.m[2][3],
464 head_mat.m[3][0], head_mat.m[3][1], head_mat.m[3][2], head_mat.m[3][3]); 462 head_mat.m[3][0], head_mat.m[3][1], head_mat.m[3][2], head_mat.m[3][3]);
465 463
466 gfx::Transform transform; 464 gfx::Transform transform;
467 if (inv_transform.GetInverse(&transform)) { 465 if (inv_transform.GetInverse(&transform)) {
(...skipping 28 matching lines...) Expand all
496 return reinterpret_cast<intptr_t>(new VrShell( 494 return reinterpret_cast<intptr_t>(new VrShell(
497 env, obj, content::WebContents::FromJavaWebContents(content_web_contents), 495 env, obj, content::WebContents::FromJavaWebContents(content_web_contents),
498 reinterpret_cast<ui::WindowAndroid*>(content_window_android), 496 reinterpret_cast<ui::WindowAndroid*>(content_window_android),
499 content::WebContents::FromJavaWebContents(ui_web_contents), 497 content::WebContents::FromJavaWebContents(ui_web_contents),
500 reinterpret_cast<ui::WindowAndroid*>(ui_window_android), 498 reinterpret_cast<ui::WindowAndroid*>(ui_window_android),
501 for_web_vr, VrShellDelegate::GetNativeDelegate(env, delegate), 499 for_web_vr, VrShellDelegate::GetNativeDelegate(env, delegate),
502 reinterpret_cast<gvr_context*>(gvr_api), reprojected_rendering)); 500 reinterpret_cast<gvr_context*>(gvr_api), reprojected_rendering));
503 } 501 }
504 502
505 } // namespace vr_shell 503 } // namespace vr_shell
OLDNEW
« no previous file with comments | « chrome/browser/android/vr_shell/vr_shell.h ('k') | chrome/browser/android/vr_shell/vr_shell_gl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698