diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2015-08-25 09:10:02 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2015-09-02 12:07:15 +1000 |
commit | 585930f0580bbb878095cee9029254510692a205 (patch) | |
tree | c102719015235c31771d9a69648aefe85b0f8fc1 | |
parent | 8c2b9dac59a4f26007749a092cc36288d314e503 (diff) |
Update devices in PortaudioBackend when setting the driver
Reinitialize portaudio to pick up changes in devices and ASIO buffer settings
-rw-r--r-- | libs/backends/portaudio/portaudio_backend.cc | 3 | ||||
-rw-r--r-- | libs/backends/portaudio/portaudio_io.cc | 6 | ||||
-rw-r--r-- | libs/backends/portaudio/portaudio_io.h | 2 |
3 files changed, 6 insertions, 5 deletions
diff --git a/libs/backends/portaudio/portaudio_backend.cc b/libs/backends/portaudio/portaudio_backend.cc index ddbf9d422b..69911d3d67 100644 --- a/libs/backends/portaudio/portaudio_backend.cc +++ b/libs/backends/portaudio/portaudio_backend.cc @@ -141,6 +141,7 @@ PortAudioBackend::set_driver (const std::string& name) DEBUG_AUDIO (string_compose ("Portaudio: Unable to set_driver %1 \n", name)); return -1; } + _pcmio->update_devices(); return 0; } @@ -168,7 +169,6 @@ PortAudioBackend::enumerate_devices () const std::vector<AudioBackend::DeviceStatus> PortAudioBackend::enumerate_input_devices () const { - _pcmio->discover(); _input_audio_device_status.clear(); std::map<int, std::string> input_devices; _pcmio->input_device_list(input_devices); @@ -183,7 +183,6 @@ PortAudioBackend::enumerate_input_devices () const std::vector<AudioBackend::DeviceStatus> PortAudioBackend::enumerate_output_devices () const { - _pcmio->discover(); _output_audio_device_status.clear(); std::map<int, std::string> output_devices; _pcmio->output_device_list(output_devices); diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc index 4e7013f060..2cb46da658 100644 --- a/libs/backends/portaudio/portaudio_io.cc +++ b/libs/backends/portaudio/portaudio_io.cc @@ -528,9 +528,11 @@ PortAudioIO::add_devices () } void -PortAudioIO::discover() +PortAudioIO::update_devices() { - DEBUG_AUDIO ("PortAudio: discover\n"); + DEBUG_AUDIO ("Update devices\n"); + if (_stream != NULL) return; + pa_deinitialize(); if (!pa_initialize()) return; clear_device_lists (); diff --git a/libs/backends/portaudio/portaudio_io.h b/libs/backends/portaudio/portaudio_io.h index e98f15451e..bfd4d1e025 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 discover(); + void update_devices(); void input_device_list (std::map<int, std::string> &devices) const; void output_device_list (std::map<int, std::string> &devices) const; |