private void DeviceAdded(object sender, IHeadsetPlugin.DeviceEventArgs e) { IHeadsetPlugin plugin = sender as IHeadsetPlugin; DeviceData data = new DeviceData { device = e.device, host = new IDeviceHost(), active = false, in_use = false }; data.plugin = (from p in plugins where p.plugin == plugin select p).Single(); try { lock (devices_lock) { devices.Add(data); } data.device.StatusChanged += DeviceStatusChanged; data.limitations = data.device.Initalize(data.host); data.device.GetModel(); if ((active_device_name == null && data.device.GetName() == last_active_device_name) || active_device_name == data.device.GetName()) { SetActiveDevice(data.device.GetName()); PortAudio.refresh_devices(); } } catch (Exception exp) { HandleError(new PluginError { device = data, exception = exp }); } }
private void DeviceRemoved(object sender, IHeadsetPlugin.DeviceEventArgs e) { DeviceData data = (from d in devices where d.device == e.device select d).SingleOrDefault(); if (data == null) { return; } lock (devices_lock) { devices.Remove(data); } if (data.device.GetName() == active_device_name) { last_active_device_name = active_device_name; active_device_name = null; } }