Chromium Code Reviews| Index: chrome/browser/android/vr_shell/vr_shell_gl.cc |
| diff --git a/chrome/browser/android/vr_shell/vr_shell_gl.cc b/chrome/browser/android/vr_shell/vr_shell_gl.cc |
| index 5d013199042033fef8c551a80e37eb793a622dbb..7db5dfc742c0f7114dd017dd0d304731ba2e883b 100644 |
| --- a/chrome/browser/android/vr_shell/vr_shell_gl.cc |
| +++ b/chrome/browser/android/vr_shell/vr_shell_gl.cc |
| @@ -20,6 +20,7 @@ |
| #include "chrome/browser/android/vr_shell/ui_scene.h" |
| #include "chrome/browser/android/vr_shell/ui_scene_manager.h" |
| #include "chrome/browser/android/vr_shell/vr_controller.h" |
| +#include "chrome/browser/android/vr_shell/vr_gl_thread.h" |
| #include "chrome/browser/android/vr_shell/vr_gl_util.h" |
| #include "chrome/browser/android/vr_shell/vr_shell.h" |
| #include "chrome/browser/android/vr_shell/vr_shell_renderer.h" |
| @@ -156,12 +157,6 @@ enum class ViewerType { |
| VIEWER_TYPE_MAX, |
| }; |
| -void RunVRDisplayInfoCallback( |
| - const base::Callback<void(device::mojom::VRDisplayInfoPtr)>& callback, |
| - device::mojom::VRDisplayInfoPtr info) { |
| - callback.Run(std::move(info)); |
| -} |
| - |
| void MatfToGvrMat(const vr::Mat4f& in, gvr::Mat4f* out) { |
| // If our std::array implementation doesn't have any non-data members, we can |
| // just cast the gvr matrix to an std::array. |
| @@ -191,8 +186,7 @@ gfx::RectF GfxRectFromUV(gvr::Rectf rect) { |
| } // namespace |
| VrShellGl::VrShellGl( |
| - const base::WeakPtr<VrShell>& weak_vr_shell, |
| - scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner, |
| + const base::WeakPtr<VrBrowserInterface>& weak_browser_interface, |
| gvr_context* gvr_api, |
| bool initially_web_vr, |
| bool reprojected_rendering, |
| @@ -201,8 +195,7 @@ VrShellGl::VrShellGl( |
| surfaceless_rendering_(reprojected_rendering), |
| task_runner_(base::ThreadTaskRunnerHandle::Get()), |
| binding_(this), |
| - weak_vr_shell_(weak_vr_shell), |
| - main_thread_task_runner_(std::move(main_thread_task_runner)), |
| + weak_browser_interface_(weak_browser_interface), |
| scene_(scene), |
| #if DCHECK_IS_ON() |
| fps_meter_(new FPSMeter()), |
| @@ -305,9 +298,8 @@ void VrShellGl::InitializeGl(gfx::AcceleratedWidget window) { |
| void VrShellGl::CreateContentSurface() { |
| content_surface_ = |
| base::MakeUnique<gl::ScopedJavaSurface>(content_surface_texture_.get()); |
| - main_thread_task_runner_->PostTask( |
| - FROM_HERE, base::Bind(&VrShell::ContentSurfaceChanged, weak_vr_shell_, |
| - content_surface_->j_surface().obj())); |
| + weak_browser_interface_->ContentSurfaceChanged( |
| + content_surface_->j_surface().obj()); |
| } |
| void VrShellGl::CreateOrResizeWebVRSurface(const gfx::Size& size) { |
| @@ -503,17 +495,14 @@ void VrShellGl::InitializeRenderer() { |
| webvr_right_viewport_.get()); |
| webvr_right_viewport_->SetSourceBufferIndex(kFramePrimaryBuffer); |
| - main_thread_task_runner_->PostTask( |
| - FROM_HERE, base::Bind(&VrShell::GvrDelegateReady, weak_vr_shell_)); |
| + weak_browser_interface_->GvrDelegateReady(); |
|
cjgrant
2017/05/02 18:07:06
I can't handle this - the code looks too clean now
ymalik
2017/05/02 20:28:40
:D thanks. Just to be clear, this comment doesn't
cjgrant
2017/05/03 14:40:38
Correct. Sorry. :)
|
| } |
| void VrShellGl::UpdateController(const gfx::Vector3dF& head_direction) { |
| controller_->UpdateState(head_direction); |
| pointer_start_ = controller_->GetPointerStart(); |
| - device::GvrGamepadData pad = controller_->GetGamepadData(); |
| - main_thread_task_runner_->PostTask( |
| - FROM_HERE, base::Bind(&VrShell::UpdateGamepadData, weak_vr_shell_, pad)); |
| + weak_browser_interface_->UpdateGamepadData(controller_->GetGamepadData()); |
| } |
| void VrShellGl::HandleControllerInput(const gfx::Vector3dF& head_direction) { |
| @@ -653,15 +642,11 @@ void VrShellGl::HandleControllerAppButtonActivity( |
| if (fabs(gesture_xz_angle) > kMinAppButtonGestureAngleRad) { |
| direction = |
| gesture_xz_angle < 0 ? UiInterface::LEFT : UiInterface::RIGHT; |
| - main_thread_task_runner_->PostTask( |
| - FROM_HERE, base::Bind(&VrShell::AppButtonGesturePerformed, |
| - weak_vr_shell_, direction)); |
| + weak_browser_interface_->AppButtonGesturePerformed(direction); |
| } |
| } |
| - if (direction == UiInterface::NONE) { |
| - main_thread_task_runner_->PostTask( |
| - FROM_HERE, base::Bind(&VrShell::AppButtonPressed, weak_vr_shell_)); |
| - } |
| + if (direction == UiInterface::NONE) |
| + weak_browser_interface_->AppButtonPressed(); |
| } |
| } |
| @@ -786,9 +771,7 @@ void VrShellGl::SendInputToUiElements(UiElement* target_element) { |
| void VrShellGl::SendGestureToContent( |
| std::unique_ptr<blink::WebInputEvent> event) { |
| - main_thread_task_runner_->PostTask( |
| - FROM_HERE, base::Bind(&VrShell::ProcessContentGesture, weak_vr_shell_, |
| - base::Passed(std::move(event)))); |
| + weak_browser_interface_->ProcessContentGesture(std::move(event)); |
| } |
| void VrShellGl::DrawFrame(int16_t frame_index) { |
| @@ -1330,8 +1313,7 @@ void VrShellGl::UpdateVSyncInterval(int64_t timebase_nanos, |
| } |
| void VrShellGl::ForceExitVr() { |
| - main_thread_task_runner_->PostTask( |
| - FROM_HERE, base::Bind(&VrShell::ForceExitVr, weak_vr_shell_)); |
| + weak_browser_interface_->ForceExitVr(); |
| } |
| void VrShellGl::SendVSync(base::TimeDelta time, |
| @@ -1359,9 +1341,7 @@ void VrShellGl::CreateVRDisplayInfo( |
| device::mojom::VRDisplayInfoPtr info = |
| device::GvrDelegate::CreateVRDisplayInfo(gvr_api_.get(), |
| webvr_surface_size_, device_id); |
| - main_thread_task_runner_->PostTask( |
| - FROM_HERE, |
| - base::Bind(&RunVRDisplayInfoCallback, callback, base::Passed(&info))); |
| + weak_browser_interface_->RunVRDisplayInfoCallback(callback, &info); |
| } |
| } // namespace vr_shell |