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

Unified Diff: device/vr/android/gvr/gvr_device_provider.cc

Issue 2471433002: Implement WebVR presentation pausing for VR Shell Menu Mode (Closed)
Patch Set: rebase Created 4 years, 1 month 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
« no previous file with comments | « device/vr/android/gvr/gvr_device_provider.h ('k') | device/vr/android/gvr/gvr_gamepad_data_fetcher.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/vr/android/gvr/gvr_device_provider.cc
diff --git a/device/vr/android/gvr/gvr_device_provider.cc b/device/vr/android/gvr/gvr_device_provider.cc
index 8a3637d25902a91e6e08143cae45ada582d26a32..d29ae9ddfc21199f89f05fa427c5ccfdea617c72 100644
--- a/device/vr/android/gvr/gvr_device_provider.cc
+++ b/device/vr/android/gvr/gvr_device_provider.cc
@@ -23,9 +23,7 @@ using base::android::GetApplicationContext;
namespace device {
-GvrDeviceProvider::GvrDeviceProvider()
- : VRDeviceProvider(),
- main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()) {}
+GvrDeviceProvider::GvrDeviceProvider() : weak_ptr_factory_(this) {}
GvrDeviceProvider::~GvrDeviceProvider() {
device::GvrDelegateProvider* delegate_provider =
@@ -62,12 +60,10 @@ bool GvrDeviceProvider::RequestPresent() {
return false;
// RequestWebVRPresent is async as a render thread may be created.
- return delegate_provider->RequestWebVRPresent(this);
+ return delegate_provider->RequestWebVRPresent(weak_ptr_factory_.GetWeakPtr());
}
void GvrDeviceProvider::ExitPresent() {
- DCHECK(main_thread_task_runner_->BelongsToCurrentThread());
-
if (!vr_device_)
return;
@@ -84,26 +80,29 @@ void GvrDeviceProvider::ExitPresent() {
delegate_provider->ExitWebVRPresent();
}
-void GvrDeviceProvider::OnGvrDelegateReady(GvrDelegate* delegate) {
- main_thread_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&GvrDeviceProvider::GvrDelegateReady, base::Unretained(this),
- base::Unretained(delegate)));
+void GvrDeviceProvider::OnGvrDelegateReady(
+ const base::WeakPtr<GvrDelegate>& delegate) {
+ if (!vr_device_)
+ return;
+ vr_device_->SetDelegate(delegate);
+ GamepadDataFetcherManager::GetInstance()->AddFactory(
+ new GvrGamepadDataFetcher::Factory(delegate, vr_device_->id()));
}
void GvrDeviceProvider::OnGvrDelegateRemoved() {
- DCHECK(main_thread_task_runner_->BelongsToCurrentThread());
- if (!vr_device_)
- return;
ExitPresent();
}
-void GvrDeviceProvider::GvrDelegateReady(GvrDelegate* delegate) {
- DCHECK(main_thread_task_runner_->BelongsToCurrentThread());
+void GvrDeviceProvider::OnDisplayBlur() {
+ if (!vr_device_)
+ return;
+ vr_device_->OnDisplayBlur();
+}
- vr_device_->SetDelegate(delegate);
- GamepadDataFetcherManager::GetInstance()->AddFactory(
- new GvrGamepadDataFetcher::Factory(delegate, vr_device_->id()));
+void GvrDeviceProvider::OnDisplayFocus() {
+ if (!vr_device_)
+ return;
+ vr_device_->OnDisplayFocus();
}
} // namespace device
« no previous file with comments | « device/vr/android/gvr/gvr_device_provider.h ('k') | device/vr/android/gvr/gvr_gamepad_data_fetcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698