| 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 13d84c29f9e9696e4f2b6b5d19581738f87fdde4..07726adad17ccece000647d0701a44edeac70fd1 100644
|
| --- a/device/vr/android/gvr/gvr_device_provider.cc
|
| +++ b/device/vr/android/gvr/gvr_device_provider.cc
|
| @@ -25,7 +25,7 @@ using base::android::GetApplicationContext;
|
|
|
| namespace device {
|
|
|
| -GvrDeviceProvider::GvrDeviceProvider() : weak_ptr_factory_(this) {}
|
| +GvrDeviceProvider::GvrDeviceProvider() {}
|
|
|
| GvrDeviceProvider::~GvrDeviceProvider() {
|
| GamepadDataFetcherManager::GetInstance()->RemoveSourceFactory(
|
| @@ -36,6 +36,7 @@ GvrDeviceProvider::~GvrDeviceProvider() {
|
| if (delegate_provider) {
|
| delegate_provider->ExitWebVRPresent();
|
| delegate_provider->DestroyNonPresentingDelegate();
|
| + delegate_provider->SetDeviceProvider(nullptr);
|
| }
|
| }
|
|
|
| @@ -51,7 +52,7 @@ void GvrDeviceProvider::Initialize() {
|
| device::GvrDelegateProvider::GetInstance();
|
| if (!delegate_provider)
|
| return;
|
| - delegate_provider->SetDeviceProvider(weak_ptr_factory_.GetWeakPtr());
|
| + delegate_provider->SetDeviceProvider(this);
|
| if (!vr_device_) {
|
| vr_device_.reset(
|
| new GvrDevice(this, delegate_provider->GetNonPresentingDelegate()));
|
| @@ -78,8 +79,7 @@ void GvrDeviceProvider::ExitPresent() {
|
| delegate_provider->ExitWebVRPresent();
|
| }
|
|
|
| -void GvrDeviceProvider::OnGvrDelegateReady(
|
| - const base::WeakPtr<GvrDelegate>& delegate) {
|
| +void GvrDeviceProvider::OnGvrDelegateReady(GvrDelegate* delegate) {
|
| if (!vr_device_)
|
| return;
|
| VLOG(1) << "Switching to presenting delegate";
|
| @@ -97,6 +97,12 @@ void GvrDeviceProvider::OnGvrDelegateRemoved() {
|
| vr_device_->OnExitPresent();
|
| }
|
|
|
| +void GvrDeviceProvider::OnNonPresentingDelegateRemoved() {
|
| + if (!vr_device_)
|
| + return;
|
| + vr_device_->SetDelegate(nullptr);
|
| +}
|
| +
|
| void GvrDeviceProvider::OnDisplayBlur() {
|
| if (!vr_device_)
|
| return;
|
|
|