Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
 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();
 }
Exemplo n.º 3
0
 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();
 }