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

Unified Diff: chrome/browser/android/vr_shell/vr_shell_gl.cc

Issue 2833773005: Pause drawing webvr when the App button is pressed (Closed)
Patch Set: refactor Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698