Chromium Code Reviews| 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..8fe71d4d7cd093a954ae0a0e1118e45a3abd5837 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( |
| + base::WeakPtr<GvrDelegate> delegate) { |
|
dcheng
2016/11/12 02:03:31
Nit: const ref
mthiesse
2016/11/14 16:41:38
Done.
|
| + 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 |