summaryrefslogtreecommitdiffstats
path: root/src/modules/alsa/alsa-util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/alsa/alsa-util.c')
-rw-r--r--src/modules/alsa/alsa-util.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 2d0ca107..5b5270b8 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -1094,7 +1094,8 @@ success:
int pa_alsa_find_mixer_and_elem(
snd_pcm_t *pcm,
snd_mixer_t **_m,
- snd_mixer_elem_t **_e) {
+ snd_mixer_elem_t **_e,
+ const char *control_name) {
int err;
snd_mixer_t *m;
@@ -1146,11 +1147,17 @@ int pa_alsa_find_mixer_and_elem(
switch (snd_pcm_stream(pcm)) {
case SND_PCM_STREAM_PLAYBACK:
- e = pa_alsa_find_elem(m, "Master", "PCM", TRUE);
+ if (control_name)
+ e = pa_alsa_find_elem(m, control_name, NULL, TRUE);
+ else
+ e = pa_alsa_find_elem(m, "Master", "PCM", TRUE);
break;
case SND_PCM_STREAM_CAPTURE:
- e = pa_alsa_find_elem(m, "Capture", "Mic", FALSE);
+ if (control_name)
+ e = pa_alsa_find_elem(m, control_name, NULL, FALSE);
+ else
+ e = pa_alsa_find_elem(m, "Capture", "Mic", FALSE);
break;
default: