| Index: device/vr/vr_device_manager.cc
|
| diff --git a/device/vr/vr_device_manager.cc b/device/vr/vr_device_manager.cc
|
| index 1f08be9c81e5dd884d8d945ed0e37ff3994549a8..ec73db1086f69156716decc453473b00aa002bd7 100644
|
| --- a/device/vr/vr_device_manager.cc
|
| +++ b/device/vr/vr_device_manager.cc
|
| @@ -70,21 +70,17 @@ void VRDeviceManager::AddService(VRServiceImpl* service) {
|
| // when they are created.
|
| GetVRDevices(service);
|
|
|
| - services_.push_back(service);
|
| + services_.insert(service);
|
| }
|
|
|
| void VRDeviceManager::RemoveService(VRServiceImpl* service) {
|
| - services_.erase(std::remove(services_.begin(), services_.end(), service),
|
| - services_.end());
|
| -
|
| - for (auto device : devices_) {
|
| - device.second->RemoveService(service);
|
| - }
|
|
|
| if (service->listening_for_activate()) {
|
| ListeningForActivateChanged(false);
|
| }
|
|
|
| + services_.erase(service);
|
| +
|
| if (services_.empty() && !keep_alive_) {
|
| // Delete the device manager when it has no active connections.
|
| delete g_vr_device_manager;
|
| @@ -110,7 +106,10 @@ bool VRDeviceManager::GetVRDevices(VRServiceImpl* service) {
|
| if (devices_.find(device->id()) == devices_.end())
|
| devices_[device->id()] = device;
|
|
|
| - device->AddService(service);
|
| + // Create a VRDisplayImpl for this service/device pair and attach
|
| + // the VRDisplayImpl to the device.
|
| + VRDisplayImpl* display_impl = service->GetVRDisplayImpl(device);
|
| + device->AddDisplay(display_impl);
|
| }
|
|
|
| return true;
|
|
|