summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-08-25 17:23:07 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-09-02 12:07:15 +1000
commit0396df963f0a46990ffac5e509f11bf9f7c0a582 (patch)
tree4e73e87b3e32b834bae59d47de66e91d3ce9ae47
parent16f8c3ce8579ade91f84a2559bcbabbbbde4587d (diff)
Implement new AudioBackend API for force updating devices in PortaudioBackend
-rw-r--r--libs/backends/portaudio/portaudio_backend.cc6
-rw-r--r--libs/backends/portaudio/portaudio_backend.h3
-rw-r--r--libs/backends/portaudio/portaudio_io.cc7
-rw-r--r--libs/backends/portaudio/portaudio_io.h2
4 files changed, 14 insertions, 4 deletions
diff --git a/libs/backends/portaudio/portaudio_backend.cc b/libs/backends/portaudio/portaudio_backend.cc
index 69911d3d67..ccb62627b9 100644
--- a/libs/backends/portaudio/portaudio_backend.cc
+++ b/libs/backends/portaudio/portaudio_backend.cc
@@ -145,6 +145,12 @@ PortAudioBackend::set_driver (const std::string& name)
return 0;
}
+bool
+PortAudioBackend::update_devices ()
+{
+ return _pcmio->update_devices();
+}
+
std::string
PortAudioBackend::driver_name () const
{
diff --git a/libs/backends/portaudio/portaudio_backend.h b/libs/backends/portaudio/portaudio_backend.h
index f1ff790e5e..9867f0de9c 100644
--- a/libs/backends/portaudio/portaudio_backend.h
+++ b/libs/backends/portaudio/portaudio_backend.h
@@ -170,6 +170,9 @@ class PortAudioBackend : public AudioBackend {
std::vector<std::string> enumerate_drivers () const;
int set_driver (const std::string&);
+ bool can_request_update_devices () { return true; }
+ bool update_devices ();
+
bool use_separate_input_and_output_devices () const;
std::vector<DeviceStatus> enumerate_devices () const;
std::vector<DeviceStatus> enumerate_input_devices () const;
diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc
index 2cb46da658..5df848d426 100644
--- a/libs/backends/portaudio/portaudio_io.cc
+++ b/libs/backends/portaudio/portaudio_io.cc
@@ -527,17 +527,18 @@ PortAudioIO::add_devices ()
}
}
-void
+bool
PortAudioIO::update_devices()
{
DEBUG_AUDIO ("Update devices\n");
- if (_stream != NULL) return;
+ if (_stream != NULL) return false;
pa_deinitialize();
- if (!pa_initialize()) return;
+ if (!pa_initialize()) return false;
clear_device_lists ();
add_none_devices ();
add_devices ();
+ return true;
}
void
diff --git a/libs/backends/portaudio/portaudio_io.h b/libs/backends/portaudio/portaudio_io.h
index bfd4d1e025..73ebb71028 100644
--- a/libs/backends/portaudio/portaudio_io.h
+++ b/libs/backends/portaudio/portaudio_io.h
@@ -63,7 +63,7 @@ public:
PaDeviceIndex get_default_input_device () const;
PaDeviceIndex get_default_output_device () const;
- void update_devices();
+ bool update_devices();
void input_device_list (std::map<int, std::string> &devices) const;
void output_device_list (std::map<int, std::string> &devices) const;