diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2015-08-25 17:23:07 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2015-09-02 12:07:15 +1000 |
commit | 0396df963f0a46990ffac5e509f11bf9f7c0a582 (patch) | |
tree | 4e73e87b3e32b834bae59d47de66e91d3ce9ae47 | |
parent | 16f8c3ce8579ade91f84a2559bcbabbbbde4587d (diff) |
Implement new AudioBackend API for force updating devices in PortaudioBackend
-rw-r--r-- | libs/backends/portaudio/portaudio_backend.cc | 6 | ||||
-rw-r--r-- | libs/backends/portaudio/portaudio_backend.h | 3 | ||||
-rw-r--r-- | libs/backends/portaudio/portaudio_io.cc | 7 | ||||
-rw-r--r-- | libs/backends/portaudio/portaudio_io.h | 2 |
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; |