summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-08-25 09:10:02 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-09-02 12:07:15 +1000
commit585930f0580bbb878095cee9029254510692a205 (patch)
treec102719015235c31771d9a69648aefe85b0f8fc1
parent8c2b9dac59a4f26007749a092cc36288d314e503 (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.cc3
-rw-r--r--libs/backends/portaudio/portaudio_io.cc6
-rw-r--r--libs/backends/portaudio/portaudio_io.h2
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;