private void OnDeviceChanged(CoreAudioDevice device, DeviceChangedType changedType) { LoggerHelper.Trace("Audio Device {0} - Change Type: {1}", device.Id, changedType); lock (devicesLock) { if (changedType == DeviceChangedType.DeviceRemoved || device.State != DeviceState.Active) { RemoveSubscriptions(device.Id); devices.Remove(device.Id); devicePeakValue.Remove(device.Id); } else { if (device.IsPlaybackDevice) { if (device.IsDefaultCommunicationsDevice) { commsPlayback = device; } if (device.IsDefaultDevice) { mediaPlayback = device; } } if (changedType == DeviceChangedType.DeviceAdded) { RemoveSubscriptions(device.Id); devicePeakSubs[device.Id] = device.PeakValueChanged.Subscribe(x => devicePeakValue[device.Id] = x.PeakValue); } devices[device.Id] = GetAudioDeviceInfo(device.Id); } } }
protected DeviceChangedArgs(IDevice dev, DeviceChangedType type) { Device = dev; ChangedType = type; }