summaryrefslogtreecommitdiff
path: root/libs/ardouralsautil/devicelist.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-06-14 22:16:31 +0200
committerRobin Gareus <robin@gareus.org>2015-06-14 22:26:06 +0200
commitacd95215a485ad17693e8eeb3a5797f1a6dfbecd (patch)
tree50dba634fe38f168d612f5b8c93fe815eb1f556e /libs/ardouralsautil/devicelist.cc
parent94c146c7801dcab403eee721805a5825f40c61bd (diff)
allow to scan for half-duplex ALSA devices
Diffstat (limited to 'libs/ardouralsautil/devicelist.cc')
-rw-r--r--libs/ardouralsautil/devicelist.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/libs/ardouralsautil/devicelist.cc b/libs/ardouralsautil/devicelist.cc
index b20df100db..3fdb1401af 100644
--- a/libs/ardouralsautil/devicelist.cc
+++ b/libs/ardouralsautil/devicelist.cc
@@ -24,7 +24,7 @@
using namespace std;
void
-ARDOUR::get_alsa_audio_device_names (std::map<std::string, std::string>& devices)
+ARDOUR::get_alsa_audio_device_names (std::map<std::string, std::string>& devices, AlsaDuplex duplex)
{
snd_ctl_t *handle;
snd_ctl_card_info_t *info;
@@ -35,6 +35,8 @@ ARDOUR::get_alsa_audio_device_names (std::map<std::string, std::string>& devices
int cardnum = -1;
int device = -1;
+ assert (duplex > 0);
+
while (snd_card_next (&cardnum) >= 0 && cardnum >= 0) {
devname = "hw:";
@@ -63,7 +65,7 @@ ARDOUR::get_alsa_audio_device_names (std::map<std::string, std::string>& devices
snd_pcm_info_set_subdevice (pcminfo, 0);
snd_pcm_info_set_stream (pcminfo, SND_PCM_STREAM_CAPTURE);
- if (snd_ctl_pcm_info (handle, pcminfo) < 0) {
+ if (snd_ctl_pcm_info (handle, pcminfo) < 0 && (duplex & HalfDuplexIn)) {
continue;
}
@@ -71,7 +73,7 @@ ARDOUR::get_alsa_audio_device_names (std::map<std::string, std::string>& devices
snd_pcm_info_set_subdevice (pcminfo, 0);
snd_pcm_info_set_stream (pcminfo, SND_PCM_STREAM_PLAYBACK);
- if (snd_ctl_pcm_info (handle, pcminfo) < 0) {
+ if (snd_ctl_pcm_info (handle, pcminfo) < 0 && (duplex & HalfDuplexOut)) {
continue;
}
devname += ',';