public static void refresh_devices(bool force = false) { if (!force && !Broker.get_instance().fully_loaded) { return; } foreach (InternalAudioDevice device in _devices) { device.is_alive = false; } Utils.api_exec("pa", "rescan"); XmlDocument doc = null; try{ doc = XmlUtils.GetDocument(Utils.api_exec("pa", "devlist xml")); }catch (KeyNotFoundException) { MessageBox.Show("Portaudio did not return a device list most likely because it cannot find an active microphone or speaker it can use, FSClient will now exit.", "Missing Device List", MessageBoxButton.OK, MessageBoxImage.Error); Environment.Exit(-1); return; } XmlNode node = XmlUtils.GetNode(doc, "devices", 0); foreach (XmlNode child in node.ChildNodes) { AudioDevice dev = new AudioDevice( cur_guid, XmlUtils.GetNodeAttrib(child, "name"), int.Parse(XmlUtils.GetNodeAttrib(child, "inputs")), int.Parse(XmlUtils.GetNodeAttrib(child, "outputs")) ); int dev_id = int.Parse(XmlUtils.GetNodeAttrib(child, "id")); bool found_device = false; foreach (InternalAudioDevice device in _devices) //TODO: Probably should sort here { if (device.device.name == dev.name && device.is_alive == false) { device.is_alive = true; device.id = dev_id; found_device = true; break; } } if (!found_device) { InternalAudioDevice new_device = new InternalAudioDevice { device = dev, is_alive = true, id = dev_id }; cur_guid++; _devices.Add(new_device); } } _pub_devices = (from c in _devices where c.is_alive select c.device).ToArray(); }
public static void refresh_devices(bool force=false) { if (! force && !Broker.get_instance().fully_loaded) return; foreach (InternalAudioDevice device in _devices) device.is_alive = false; Utils.api_exec("pa", "rescan"); XmlDocument doc=null; try{ doc = XmlUtils.GetDocument(Utils.api_exec("pa", "devlist xml")); }catch(KeyNotFoundException){ MessageBox.Show("Portaudio did not return a device list most likely because it cannot find an active microphone or speaker it can use, FSClient will now exit.", "Missing Device List", MessageBoxButton.OK, MessageBoxImage.Error); Environment.Exit(-1); return; } XmlNode node = XmlUtils.GetNode(doc, "devices", 0); foreach (XmlNode child in node.ChildNodes) { AudioDevice dev = new AudioDevice( cur_guid, XmlUtils.GetNodeAttrib(child, "name"), int.Parse(XmlUtils.GetNodeAttrib(child, "inputs")), int.Parse(XmlUtils.GetNodeAttrib(child, "outputs")) ); int dev_id = int.Parse(XmlUtils.GetNodeAttrib(child, "id")); bool found_device = false; foreach (InternalAudioDevice device in _devices)//TODO: Probably should sort here { if (device.device.name == dev.name && device.is_alive == false) { device.is_alive = true; device.id = dev_id; found_device = true; break; } } if (!found_device) { InternalAudioDevice new_device = new InternalAudioDevice { device = dev, is_alive = true, id = dev_id }; cur_guid++; _devices.Add(new_device); } } _pub_devices = (from c in _devices where c.is_alive select c.device).ToArray(); }
public static void refresh_devices(bool force=false) { if (! force && !Broker.get_instance().fully_loaded) return; foreach (InternalAudioDevice device in _devices) device.is_alive = false; Utils.api_exec("pa", "rescan"); XmlDocument doc = XmlUtils.GetDocument(Utils.api_exec("pa", "devlist xml")); XmlNode node = XmlUtils.GetNode(doc, "devices", 0); foreach (XmlNode child in node.ChildNodes) { AudioDevice dev = new AudioDevice( cur_guid, XmlUtils.GetNodeAttrib(child, "name"), int.Parse(XmlUtils.GetNodeAttrib(child, "inputs")), int.Parse(XmlUtils.GetNodeAttrib(child, "outputs")) ); int dev_id = int.Parse(XmlUtils.GetNodeAttrib(child, "id")); bool found_device = false; foreach (InternalAudioDevice device in _devices)//TODO: Probably should sort here { if (device.device.name == dev.name && device.is_alive == false) { device.is_alive = true; device.id = dev_id; found_device = true; break; } } if (!found_device) { InternalAudioDevice new_device = new InternalAudioDevice { device = dev, is_alive = true, id = dev_id }; cur_guid++; _devices.Add(new_device); } } _pub_devices = (from c in _devices where c.is_alive select c.device).ToArray(); }