summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-05-04 13:28:41 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-07-31 09:59:54 +1000
commitff1d4d5c679f0511c26e8054bce0cb0f8c81dc1c (patch)
tree2dcee35345fa243d8f7fe1fc4c042927ac43ea6b
parent4e370feeb17a2e68e35e4ff6b0a67eaf940a9b91 (diff)
Refactor PortAudioIO::discover into three private methods
-rw-r--r--libs/backends/portaudio/portaudio_io.cc44
-rw-r--r--libs/backends/portaudio/portaudio_io.h9
2 files changed, 38 insertions, 15 deletions
diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc
index 164ac91cd8..77ea0536fb 100644
--- a/libs/backends/portaudio/portaudio_io.cc
+++ b/libs/backends/portaudio/portaudio_io.cc
@@ -211,29 +211,36 @@ PortAudioIO::get_default_output_device ()
}
void
-PortAudioIO::discover()
+PortAudioIO::clear_device_list ()
{
- if (!initialize_pa()) return;
-
for (std::map<int, paDevice*>::const_iterator i = _devices.begin (); i != _devices.end(); ++i) {
delete i->second;
}
_devices.clear();
+}
+void
+PortAudioIO::add_default_device ()
+{
const PaHostApiInfo* info = Pa_GetHostApiInfo (_host_api_index);
if (info == NULL) return;
- {
- const PaDeviceInfo* nfo_i = Pa_GetDeviceInfo(get_default_input_device());
- const PaDeviceInfo* nfo_o = Pa_GetDeviceInfo(get_default_output_device());
- if (nfo_i && nfo_o) {
- _devices.insert (std::pair<int, paDevice*> (-1,
- new paDevice("Default",
- nfo_i->maxInputChannels,
- nfo_o->maxOutputChannels
- )));
- }
+ const PaDeviceInfo* nfo_i = Pa_GetDeviceInfo(get_default_input_device());
+ const PaDeviceInfo* nfo_o = Pa_GetDeviceInfo(get_default_output_device());
+ if (nfo_i && nfo_o) {
+ _devices.insert (std::pair<int, paDevice*> (-1,
+ new paDevice("Default",
+ nfo_i->maxInputChannels,
+ nfo_o->maxOutputChannels
+ )));
}
+}
+
+void
+PortAudioIO::add_devices ()
+{
+ const PaHostApiInfo* info = Pa_GetHostApiInfo (_host_api_index);
+ if (info == NULL) return;
int n_devices = Pa_GetDeviceCount();
#ifndef NDEBUG
@@ -259,6 +266,7 @@ PortAudioIO::discover()
if ( nfo->maxInputChannels == 0 && nfo->maxOutputChannels == 0) {
continue;
}
+
_devices.insert (std::pair<int, paDevice*> (i, new paDevice(
nfo->name,
nfo->maxInputChannels,
@@ -268,6 +276,16 @@ PortAudioIO::discover()
}
void
+PortAudioIO::discover()
+{
+ if (!initialize_pa()) return;
+
+ clear_device_list ();
+ add_default_device ();
+ add_devices ();
+}
+
+void
PortAudioIO::pcm_stop ()
{
if (_stream) {
diff --git a/libs/backends/portaudio/portaudio_io.h b/libs/backends/portaudio/portaudio_io.h
index 9871850ec4..fccda4f05e 100644
--- a/libs/backends/portaudio/portaudio_io.h
+++ b/libs/backends/portaudio/portaudio_io.h
@@ -75,7 +75,13 @@ public:
int get_capture_channel (uint32_t chn, float *input, uint32_t n_samples);
int set_playback_channel (uint32_t chn, const float *input, uint32_t n_samples);
-private:
+private: // Methods
+
+ void clear_device_list ();
+ void add_default_device ();
+ void add_devices ();
+
+private: // Data
int _state;
bool _initialized;
@@ -91,7 +97,6 @@ private:
uint32_t _cur_input_latency;
uint32_t _cur_output_latency;
-
struct paDevice {
std::string name;
uint32_t n_inputs;