Implement AudioBackend::driver_name() in PortaudioBackend
authorTim Mayberry <mojofunk@gmail.com>
Wed, 29 Jul 2015 03:28:17 +0000 (13:28 +1000)
committerTim Mayberry <mojofunk@gmail.com>
Thu, 30 Jul 2015 23:59:54 +0000 (09:59 +1000)
This was missing and is necessary for EngineControl dialog to work properly

libs/backends/portaudio/portaudio_backend.cc
libs/backends/portaudio/portaudio_backend.h
libs/backends/portaudio/portaudio_io.cc
libs/backends/portaudio/portaudio_io.h

index e879d2b72ca05dc42a5076f406d6832d428c49df..0555f2596bdbb69666ffe0d0947766461b301ac2 100644 (file)
@@ -128,10 +128,22 @@ PortAudioBackend::enumerate_drivers () const
 int
 PortAudioBackend::set_driver (const std::string& name)
 {
-       _pcmio->set_host_api (name);
+       DEBUG_AUDIO (string_compose ("Portaudio: set_driver %1 \n", name));
+       if (!_pcmio->set_host_api (name)) {
+               DEBUG_AUDIO (string_compose ("Portaudio: Unable to set_driver %1 \n", name));
+               return -1;
+       }
        return 0;
 }
 
+std::string
+PortAudioBackend::driver_name () const
+{
+       std::string driver_name = _pcmio->get_host_api ();
+       DEBUG_AUDIO (string_compose ("Portaudio: driver_name %1 \n", driver_name));
+       return driver_name;
+}
+
 bool
 PortAudioBackend::use_separate_input_and_output_devices () const
 {
index 9831d035d2ef9a92168447ccad30b3827a1650ab..22dd38690416523d067c08162744d9daf2c119dc 100644 (file)
@@ -163,6 +163,7 @@ class PortAudioBackend : public AudioBackend {
                bool is_realtime () const;
 
                bool requires_driver_selection() const;
+               std::string driver_name () const;
                std::vector<std::string> enumerate_drivers () const;
                int set_driver (const std::string&);
 
index 9c3ff396506ecaaae3b95130a1b7935b0588e604..30a0a25eb49c5a76a4b8f9252e152445e44792e7 100644 (file)
@@ -44,6 +44,7 @@ PortAudioIO::PortAudioIO ()
        , _cur_sample_rate (0)
        , _cur_input_latency (0)
        , _cur_output_latency (0)
+       , _host_api_index(-1)
 {
 }
 
@@ -180,14 +181,18 @@ PortAudioIO::host_api_list (std::vector<std::string>& api_list)
        }
 }
 
-void
+bool
 PortAudioIO::set_host_api (const std::string& host_api_name)
 {
-       _host_api_index = get_host_api_index_from_name (host_api_name);
+       PaHostApiIndex new_index = get_host_api_index_from_name (host_api_name);
 
-       if (_host_api_index < 0) {
-               DEBUG_AUDIO ("Error setting host API\n");
+       if (new_index < 0) {
+               DEBUG_AUDIO ("Portaudio: Error setting host API\n");
+               return false;
        }
+       _host_api_index = new_index;
+       _host_api_name = host_api_name;
+       return true;
 }
 
 PaHostApiIndex
index 2f90a1d1a6cfec6702571ce8f1d557ef45e37b5b..25f198bd5a60e5c76400fb67872010ed94b35aee 100644 (file)
@@ -39,8 +39,9 @@ public:
 
        bool     initialize_pa ();
 
-       void     host_api_list (std::vector<std::string>&);
-       void     set_host_api (const std::string& host_api_name);
+       void host_api_list (std::vector<std::string>&);
+       bool set_host_api (const std::string& host_api_name);
+       std::string get_host_api () const { return _host_api_name; }
        PaHostApiIndex get_host_api_index_from_name (const std::string& name);
 
        PaDeviceIndex get_default_input_device ();
@@ -114,6 +115,7 @@ private: // Data
        std::map<int, paDevice *> _output_devices;
 
        PaHostApiIndex _host_api_index;
+       std::string _host_api_name;
 
 };