From 5594cb370cdee65a6e688afc4e37a0786077962e Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Thu, 5 Jan 2006 18:47:01 +0000 Subject: [PATCH] Fix the handling of playback elements without switch Fix the handling of playback elements without switch (e.g. softvol controls). Taken from bug#1278. --- alsa/mixer.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/alsa/mixer.c b/alsa/mixer.c index 0091140..251a08a 100644 --- a/alsa/mixer.c +++ b/alsa/mixer.c @@ -482,9 +482,13 @@ int lib_oss_mixer_ioctl(int fd, unsigned long cmd, ...) break; } if (snd_mixer_selem_has_playback_volume(elem)) { - err = snd_mixer_selem_get_playback_switch(elem, SND_MIXER_SCHN_FRONT_LEFT, &sw); - if (err < 0) - break; + if (snd_mixer_selem_has_playback_switch(elem)) { + err = snd_mixer_selem_get_playback_switch(elem, SND_MIXER_SCHN_FRONT_LEFT, &sw); + if (err < 0) + break; + } else { + sw = 1; + } if (sw) { err = snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_FRONT_LEFT, &lvol); if (err < 0) @@ -494,9 +498,13 @@ int lib_oss_mixer_ioctl(int fd, unsigned long cmd, ...) if (snd_mixer_selem_is_playback_mono(elem)) { rvol = lvol; } else { - err = snd_mixer_selem_get_playback_switch(elem, SND_MIXER_SCHN_FRONT_RIGHT, &sw); - if (err < 0) - break; + if (snd_mixer_selem_has_playback_switch(elem)) { + err = snd_mixer_selem_get_playback_switch(elem, SND_MIXER_SCHN_FRONT_RIGHT, &sw); + if (err < 0) + break; + } else { + sw = 1; + } if (sw) { err = snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_FRONT_RIGHT, &rvol); if (err < 0) -- 2.47.1