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

Side by Side Diff: device/vr/android/gvr/gvr_device_provider.cc

Issue 2506853002: Fix double-deletion of VR Shell when exiting webVR in onPause. (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 unified diff | Download patch
« no previous file with comments | « chrome/browser/android/vr_shell/vr_shell_delegate.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/vr/android/gvr/gvr_device_provider.h" 5 #include "device/vr/android/gvr/gvr_device_provider.h"
6 6
7 #include <jni.h> 7 #include <jni.h>
8 8
9 #include "base/android/context_utils.h" 9 #include "base/android/context_utils.h"
10 #include "base/android/jni_android.h" 10 #include "base/android/jni_android.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 if (!delegate_provider) 62 if (!delegate_provider)
63 return false; 63 return false;
64 64
65 // RequestWebVRPresent is async as a render thread may be created. 65 // RequestWebVRPresent is async as a render thread may be created.
66 return delegate_provider->RequestWebVRPresent(weak_ptr_factory_.GetWeakPtr()); 66 return delegate_provider->RequestWebVRPresent(weak_ptr_factory_.GetWeakPtr());
67 } 67 }
68 68
69 // VR presentation exit requested by the API. 69 // VR presentation exit requested by the API.
70 void GvrDeviceProvider::ExitPresent() { 70 void GvrDeviceProvider::ExitPresent() {
71 SwitchToNonPresentingDelegate(); 71 SwitchToNonPresentingDelegate();
72 // If we're presenting currently stop.
73 GvrDelegateProvider* delegate_provider = GvrDelegateProvider::GetInstance();
74 if (delegate_provider)
75 delegate_provider->ExitWebVRPresent();
72 } 76 }
73 77
74 void GvrDeviceProvider::OnGvrDelegateReady( 78 void GvrDeviceProvider::OnGvrDelegateReady(
75 const base::WeakPtr<GvrDelegate>& delegate) { 79 const base::WeakPtr<GvrDelegate>& delegate) {
76 if (!vr_device_) 80 if (!vr_device_)
77 return; 81 return;
78 vr_device_->SetDelegate(delegate); 82 vr_device_->SetDelegate(delegate);
79 GamepadDataFetcherManager::GetInstance()->AddFactory( 83 GamepadDataFetcherManager::GetInstance()->AddFactory(
80 new GvrGamepadDataFetcher::Factory(delegate, vr_device_->id())); 84 new GvrGamepadDataFetcher::Factory(delegate, vr_device_->id()));
81 } 85 }
(...skipping 22 matching lines...) Expand all
104 void GvrDeviceProvider::SwitchToNonPresentingDelegate() { 108 void GvrDeviceProvider::SwitchToNonPresentingDelegate() {
105 GvrDelegateProvider* delegate_provider = GvrDelegateProvider::GetInstance(); 109 GvrDelegateProvider* delegate_provider = GvrDelegateProvider::GetInstance();
106 if (!vr_device_ || !delegate_provider) 110 if (!vr_device_ || !delegate_provider)
107 return; 111 return;
108 112
109 vr_device_->SetDelegate(delegate_provider->GetNonPresentingDelegate()); 113 vr_device_->SetDelegate(delegate_provider->GetNonPresentingDelegate());
110 114
111 // Remove GVR gamepad polling. 115 // Remove GVR gamepad polling.
112 GamepadDataFetcherManager::GetInstance()->RemoveSourceFactory( 116 GamepadDataFetcherManager::GetInstance()->RemoveSourceFactory(
113 GAMEPAD_SOURCE_GVR); 117 GAMEPAD_SOURCE_GVR);
114
115 // If we're presenting currently stop.
116 delegate_provider->ExitWebVRPresent();
117 } 118 }
118 119
119 } // namespace device 120 } // namespace device
OLDNEW
« no previous file with comments | « chrome/browser/android/vr_shell/vr_shell_delegate.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698