summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-07-29 13:28:17 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-07-31 09:59:54 +1000
commitfe50d068761a2e2cbd7b95678d807adbde32eb65 (patch)
treef31315d0b67b77b41168ddc2b07be0cf5789bf2d
parent6a0e46352c664a3bf38ae5711ff275c611374963 (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.cc14
-rw-r--r--libs/backends/portaudio/portaudio_backend.h1
-rw-r--r--libs/backends/portaudio/portaudio_io.cc13
-rw-r--r--libs/backends/portaudio/portaudio_io.h6
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;
};