diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2015-07-29 13:28:17 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2015-07-31 09:59:54 +1000 |
commit | fe50d068761a2e2cbd7b95678d807adbde32eb65 (patch) | |
tree | f31315d0b67b77b41168ddc2b07be0cf5789bf2d | |
parent | 6a0e46352c664a3bf38ae5711ff275c611374963 (diff) |
Implement AudioBackend::driver_name() in PortaudioBackend
This was missing and is necessary for EngineControl dialog to work properly
-rw-r--r-- | libs/backends/portaudio/portaudio_backend.cc | 14 | ||||
-rw-r--r-- | libs/backends/portaudio/portaudio_backend.h | 1 | ||||
-rw-r--r-- | libs/backends/portaudio/portaudio_io.cc | 13 | ||||
-rw-r--r-- | libs/backends/portaudio/portaudio_io.h | 6 |
4 files changed, 27 insertions, 7 deletions
diff --git a/libs/backends/portaudio/portaudio_backend.cc b/libs/backends/portaudio/portaudio_backend.cc index e879d2b72c..0555f2596b 100644 --- a/libs/backends/portaudio/portaudio_backend.cc +++ b/libs/backends/portaudio/portaudio_backend.cc @@ -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 { diff --git a/libs/backends/portaudio/portaudio_backend.h b/libs/backends/portaudio/portaudio_backend.h index 9831d035d2..22dd386904 100644 --- a/libs/backends/portaudio/portaudio_backend.h +++ b/libs/backends/portaudio/portaudio_backend.h @@ -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&); diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc index 9c3ff39650..30a0a25eb4 100644 --- a/libs/backends/portaudio/portaudio_io.cc +++ b/libs/backends/portaudio/portaudio_io.cc @@ -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 diff --git a/libs/backends/portaudio/portaudio_io.h b/libs/backends/portaudio/portaudio_io.h index 2f90a1d1a6..25f198bd5a 100644 --- a/libs/backends/portaudio/portaudio_io.h +++ b/libs/backends/portaudio/portaudio_io.h @@ -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; }; |