| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "content/browser/vr/vr_device_manager.h" | 5 #include "content/browser/vr/vr_device_manager.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/memory/singleton.h" | 10 #include "base/memory/singleton.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 // non-nullptr and vica versa. | 70 // non-nullptr and vica versa. |
| 71 CHECK_NE(!!instance, !!g_vr_device_manager); | 71 CHECK_NE(!!instance, !!g_vr_device_manager); |
| 72 g_vr_device_manager = instance; | 72 g_vr_device_manager = instance; |
| 73 } | 73 } |
| 74 | 74 |
| 75 bool VRDeviceManager::HasInstance() { | 75 bool VRDeviceManager::HasInstance() { |
| 76 // For testing. Checks to see if a VRDeviceManager instance is active. | 76 // For testing. Checks to see if a VRDeviceManager instance is active. |
| 77 return !!g_vr_device_manager; | 77 return !!g_vr_device_manager; |
| 78 } | 78 } |
| 79 | 79 |
| 80 mojo::Array<blink::mojom::VRDeviceInfoPtr> VRDeviceManager::GetVRDevices() { | 80 mojo::Array<blink::mojom::VRDisplayPtr> VRDeviceManager::GetVRDevices() { |
| 81 DCHECK(thread_checker_.CalledOnValidThread()); | 81 DCHECK(thread_checker_.CalledOnValidThread()); |
| 82 | 82 |
| 83 InitializeProviders(); | 83 InitializeProviders(); |
| 84 | 84 |
| 85 std::vector<VRDevice*> devices; | 85 std::vector<VRDevice*> devices; |
| 86 for (const auto& provider : providers_) | 86 for (const auto& provider : providers_) |
| 87 provider->GetDevices(&devices); | 87 provider->GetDevices(&devices); |
| 88 | 88 |
| 89 mojo::Array<blink::mojom::VRDeviceInfoPtr> out_devices; | 89 mojo::Array<blink::mojom::VRDisplayPtr> out_devices; |
| 90 for (const auto& device : devices) { | 90 for (const auto& device : devices) { |
| 91 if (device->id() == VR_DEVICE_LAST_ID) | 91 if (device->id() == VR_DEVICE_LAST_ID) |
| 92 continue; | 92 continue; |
| 93 | 93 |
| 94 if (devices_.find(device->id()) == devices_.end()) | 94 if (devices_.find(device->id()) == devices_.end()) |
| 95 devices_[device->id()] = device; | 95 devices_[device->id()] = device; |
| 96 | 96 |
| 97 blink::mojom::VRDeviceInfoPtr vr_device_info = device->GetVRDevice(); | 97 blink::mojom::VRDisplayPtr vr_device_info = device->GetVRDevice(); |
| 98 if (vr_device_info.is_null()) | 98 if (vr_device_info.is_null()) |
| 99 continue; | 99 continue; |
| 100 | 100 |
| 101 vr_device_info->index = device->id(); | 101 vr_device_info->index = device->id(); |
| 102 out_devices.push_back(std::move(vr_device_info)); | 102 out_devices.push_back(std::move(vr_device_info)); |
| 103 } | 103 } |
| 104 | 104 |
| 105 return out_devices; | 105 return out_devices; |
| 106 } | 106 } |
| 107 | 107 |
| 108 VRDevice* VRDeviceManager::GetDevice(unsigned int index) { | 108 VRDevice* VRDeviceManager::GetDevice(unsigned int index) { |
| 109 DCHECK(thread_checker_.CalledOnValidThread()); | 109 DCHECK(thread_checker_.CalledOnValidThread()); |
| 110 | 110 |
| 111 if (index == 0) { |
| 112 return NULL; |
| 113 } |
| 114 |
| 111 DeviceMap::iterator iter = devices_.find(index); | 115 DeviceMap::iterator iter = devices_.find(index); |
| 112 if (iter == devices_.end()) { | 116 if (iter == devices_.end()) { |
| 113 return nullptr; | 117 return nullptr; |
| 114 } | 118 } |
| 115 return iter->second; | 119 return iter->second; |
| 116 } | 120 } |
| 117 | 121 |
| 118 void VRDeviceManager::InitializeProviders() { | 122 void VRDeviceManager::InitializeProviders() { |
| 119 if (vr_initialized_) { | 123 if (vr_initialized_) { |
| 120 return; | 124 return; |
| 121 } | 125 } |
| 122 | 126 |
| 123 for (const auto& provider : providers_) | 127 for (const auto& provider : providers_) |
| 124 provider->Initialize(); | 128 provider->Initialize(); |
| 125 | 129 |
| 126 vr_initialized_ = true; | 130 vr_initialized_ = true; |
| 127 } | 131 } |
| 128 | 132 |
| 129 void VRDeviceManager::RegisterProvider( | 133 void VRDeviceManager::RegisterProvider( |
| 130 std::unique_ptr<VRDeviceProvider> provider) { | 134 std::unique_ptr<VRDeviceProvider> provider) { |
| 131 providers_.push_back(make_linked_ptr(provider.release())); | 135 providers_.push_back(make_linked_ptr(provider.release())); |
| 132 } | 136 } |
| 133 | 137 |
| 134 void VRDeviceManager::GetDevices(const GetDevicesCallback& callback) { | 138 void VRDeviceManager::GetDisplays(const GetDisplaysCallback& callback) { |
| 135 callback.Run(GetVRDevices()); | 139 callback.Run(GetVRDevices()); |
| 136 } | 140 } |
| 137 | 141 |
| 138 void VRDeviceManager::GetSensorState(uint32_t index, | 142 void VRDeviceManager::GetPose(uint32_t index, |
| 139 const GetSensorStateCallback& callback) { | 143 const GetPoseCallback& callback) { |
| 140 VRDevice* device = GetDevice(index); | 144 VRDevice* device = GetDevice(index); |
| 141 if (device) { | 145 if (device) { |
| 142 callback.Run(device->GetSensorState()); | 146 callback.Run(device->GetPose()); |
| 143 } else { | 147 } else { |
| 144 callback.Run(nullptr); | 148 callback.Run(nullptr); |
| 145 } | 149 } |
| 146 } | 150 } |
| 147 | 151 |
| 148 void VRDeviceManager::ResetSensor(uint32_t index) { | 152 void VRDeviceManager::ResetPose(uint32_t index) { |
| 149 VRDevice* device = GetDevice(index); | 153 VRDevice* device = GetDevice(index); |
| 150 if (device) | 154 if (device) |
| 151 device->ResetSensor(); | 155 device->ResetPose(); |
| 152 } | 156 } |
| 153 | 157 |
| 154 } // namespace content | 158 } // namespace content |
| OLD | NEW |