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

Unified Diff: device/vr/vr_device_manager.cc

Issue 2167643003: Refactored VRService interaction and added VRServiceClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Liberal sprinkling of 'u's Created 4 years, 5 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/vr/vr_device_manager.h ('k') | device/vr/vr_service.mojom » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/vr/vr_device_manager.cc
diff --git a/device/vr/vr_device_manager.cc b/device/vr/vr_device_manager.cc
index 4d960baa732c89037c35cb0ab5fe796fffd7edf3..079419543d5c2df184974b2d5dbe547d734fee9e 100644
--- a/device/vr/vr_device_manager.cc
+++ b/device/vr/vr_device_manager.cc
@@ -22,8 +22,6 @@ VRDeviceManager* g_vr_device_manager = nullptr;
VRDeviceManager::VRDeviceManager()
: vr_initialized_(false), keep_alive_(false) {
- bindings_.set_connection_error_handler(
- base::Bind(&VRDeviceManager::OnConnectionError, base::Unretained(this)));
// Register VRDeviceProviders for the current platform
#if defined(OS_ANDROID)
std::unique_ptr<VRDeviceProvider> cardboard_provider(
@@ -44,19 +42,6 @@ VRDeviceManager::~VRDeviceManager() {
g_vr_device_manager = nullptr;
}
-void VRDeviceManager::BindRequest(mojo::InterfaceRequest<VRService> request) {
- VRDeviceManager* device_manager = GetInstance();
- device_manager->bindings_.AddBinding(device_manager, std::move(request));
-}
-
-void VRDeviceManager::OnConnectionError() {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (bindings_.empty() && !keep_alive_) {
- // Delete the device manager when it has no active connections.
- delete g_vr_device_manager;
- }
-}
-
VRDeviceManager* VRDeviceManager::GetInstance() {
if (!g_vr_device_manager)
g_vr_device_manager = new VRDeviceManager();
@@ -76,6 +61,23 @@ bool VRDeviceManager::HasInstance() {
return !!g_vr_device_manager;
}
+void VRDeviceManager::AddService(VRServiceImpl* service) {
+ services_.push_back(service);
+
+ // Ensure that the device providers are initialized
+ InitializeProviders();
+}
+
+void VRDeviceManager::RemoveService(VRServiceImpl* service) {
+ services_.erase(std::remove(services_.begin(), services_.end(), service),
+ services_.end());
+
+ if (services_.empty() && !keep_alive_) {
+ // Delete the device manager when it has no active connections.
+ delete g_vr_device_manager;
+ }
+}
+
mojo::Array<VRDisplayPtr> VRDeviceManager::GetVRDevices() {
DCHECK(thread_checker_.CalledOnValidThread());
@@ -118,6 +120,13 @@ VRDevice* VRDeviceManager::GetDevice(unsigned int index) {
return iter->second;
}
+// These dispatchers must use Clone() instead of std::move to ensure that
+// if there are multiple registered services they all get a copy of the data.
+void VRDeviceManager::OnDeviceChanged(VRDisplayPtr device) {
+ for (const auto& service : services_)
+ service->client()->OnDisplayChanged(device.Clone());
+}
+
void VRDeviceManager::InitializeProviders() {
if (vr_initialized_) {
return;
@@ -134,23 +143,4 @@ void VRDeviceManager::RegisterProvider(
providers_.push_back(make_linked_ptr(provider.release()));
}
-void VRDeviceManager::GetDisplays(const GetDisplaysCallback& callback) {
- callback.Run(GetVRDevices());
-}
-
-void VRDeviceManager::GetPose(uint32_t index, const GetPoseCallback& callback) {
- VRDevice* device = GetDevice(index);
- if (device) {
- callback.Run(device->GetPose());
- } else {
- callback.Run(nullptr);
- }
-}
-
-void VRDeviceManager::ResetPose(uint32_t index) {
- VRDevice* device = GetDevice(index);
- if (device)
- device->ResetPose();
-}
-
} // namespace device
« no previous file with comments | « device/vr/vr_device_manager.h ('k') | device/vr/vr_service.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698