OLD | NEW |
---|---|
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 "chrome/browser/android/vr_shell/vr_shell.h" | 5 #include "chrome/browser/android/vr_shell/vr_shell.h" |
6 | 6 |
7 #include <android/native_window_jni.h> | 7 #include <android/native_window_jni.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
239 delegate_provider_->device_provider()->Device()->OnBlur(); | 239 delegate_provider_->device_provider()->Device()->OnBlur(); |
240 else | 240 else |
241 delegate_provider_->device_provider()->Device()->OnFocus(); | 241 delegate_provider_->device_provider()->Device()->OnFocus(); |
242 } | 242 } |
243 | 243 |
244 void VrShell::NavigateBack() { | 244 void VrShell::NavigateBack() { |
245 JNIEnv* env = base::android::AttachCurrentThread(); | 245 JNIEnv* env = base::android::AttachCurrentThread(); |
246 Java_VrShellImpl_navigateBack(env, j_vr_shell_.obj()); | 246 Java_VrShellImpl_navigateBack(env, j_vr_shell_.obj()); |
247 } | 247 } |
248 | 248 |
249 void VrShell::OnTriggerEvent(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 249 void VrShell::OnTriggerEvent(JNIEnv* env, |
250 const JavaParamRef<jobject>& obj, | |
251 bool touched) { | |
250 gl_thread_->task_runner()->PostTask( | 252 gl_thread_->task_runner()->PostTask( |
251 FROM_HERE, | 253 FROM_HERE, base::Bind(&VrShellGl::OnTriggerEvent, |
252 base::Bind(&VrShellGl::OnTriggerEvent, gl_thread_->GetVrShellGl())); | 254 gl_thread_->GetVrShellGl(), touched)); |
253 } | 255 } |
254 | 256 |
255 void VrShell::OnPause(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 257 void VrShell::OnPause(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
256 gl_thread_->task_runner()->PostTask( | 258 gl_thread_->task_runner()->PostTask( |
257 FROM_HERE, base::Bind(&VrShellGl::OnPause, gl_thread_->GetVrShellGl())); | 259 FROM_HERE, base::Bind(&VrShellGl::OnPause, gl_thread_->GetVrShellGl())); |
258 | 260 |
259 // exit vr session | 261 // exit vr session |
260 if (metrics_helper_) | 262 if (metrics_helper_) |
261 metrics_helper_->SetVRActive(false); | 263 metrics_helper_->SetVRActive(false); |
262 SetIsInVR(web_contents_, false); | 264 SetIsInVR(web_contents_, false); |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
586 } | 588 } |
587 } | 589 } |
588 | 590 |
589 void VrShell::UpdateGamepadData(device::GvrGamepadData pad) { | 591 void VrShell::UpdateGamepadData(device::GvrGamepadData pad) { |
590 if (!gamepad_source_active_) { | 592 if (!gamepad_source_active_) { |
591 if (!delegate_provider_->device_provider()) | 593 if (!delegate_provider_->device_provider()) |
592 return; | 594 return; |
593 | 595 |
594 unsigned int device_id = | 596 unsigned int device_id = |
595 delegate_provider_->device_provider()->Device()->id(); | 597 delegate_provider_->device_provider()->Device()->id(); |
598 | |
599 // Two gamepad factories: one for screen only, and one for controller. | |
596 device::GamepadDataFetcherManager::GetInstance()->AddFactory( | 600 device::GamepadDataFetcherManager::GetInstance()->AddFactory( |
597 new device::GvrGamepadDataFetcher::Factory(this, device_id)); | 601 new device::GvrGamepadDataFetcher::Factory(this, device_id, true)); |
602 | |
603 device::GamepadDataFetcherManager::GetInstance()->AddFactory( | |
mthiesse
2017/05/16 00:44:37
sidenote, gamepad API is scary :P Add twice, remov
| |
604 new device::GvrGamepadDataFetcher::Factory(this, device_id, false)); | |
598 gamepad_source_active_ = true; | 605 gamepad_source_active_ = true; |
599 } | 606 } |
600 if (gamepad_data_fetcher_) { | 607 for (auto* fetcher : gamepad_data_fetchers_) { |
601 gamepad_data_fetcher_->SetGamepadData(pad); | 608 fetcher->SetGamepadData(pad); |
602 } | 609 } |
603 } | 610 } |
604 | 611 |
605 void VrShell::RegisterGamepadDataFetcher( | 612 void VrShell::RegisterGamepadDataFetcher( |
606 device::GvrGamepadDataFetcher* fetcher) { | 613 device::GvrGamepadDataFetcher* fetcher) { |
607 DVLOG(1) << __FUNCTION__ << "(" << fetcher << ")"; | 614 DVLOG(1) << __FUNCTION__ << "(" << fetcher << ")"; |
608 gamepad_data_fetcher_ = fetcher; | 615 gamepad_data_fetchers_.push_back(fetcher); |
609 } | 616 } |
610 | 617 |
611 // ---------------------------------------------------------------------------- | 618 // ---------------------------------------------------------------------------- |
612 // Native JNI methods | 619 // Native JNI methods |
613 // ---------------------------------------------------------------------------- | 620 // ---------------------------------------------------------------------------- |
614 | 621 |
615 jlong Init(JNIEnv* env, | 622 jlong Init(JNIEnv* env, |
616 const JavaParamRef<jobject>& obj, | 623 const JavaParamRef<jobject>& obj, |
617 const JavaParamRef<jobject>& delegate, | 624 const JavaParamRef<jobject>& delegate, |
618 jlong window_android, | 625 jlong window_android, |
619 jboolean for_web_vr, | 626 jboolean for_web_vr, |
620 jboolean in_cct, | 627 jboolean in_cct, |
621 jlong gvr_api, | 628 jlong gvr_api, |
622 jboolean reprojected_rendering) { | 629 jboolean reprojected_rendering) { |
623 return reinterpret_cast<intptr_t>(new VrShell( | 630 return reinterpret_cast<intptr_t>(new VrShell( |
624 env, obj, reinterpret_cast<ui::WindowAndroid*>(window_android), | 631 env, obj, reinterpret_cast<ui::WindowAndroid*>(window_android), |
625 for_web_vr, in_cct, | 632 for_web_vr, in_cct, |
626 VrShellDelegate::GetNativeVrShellDelegate(env, delegate), | 633 VrShellDelegate::GetNativeVrShellDelegate(env, delegate), |
627 reinterpret_cast<gvr_context*>(gvr_api), reprojected_rendering)); | 634 reinterpret_cast<gvr_context*>(gvr_api), reprojected_rendering)); |
628 } | 635 } |
629 | 636 |
630 } // namespace vr_shell | 637 } // namespace vr_shell |
OLD | NEW |