Commit 6d48a568 authored by Stefano Miccoli's avatar Stefano Miccoli

clamp 'set_normalized_volume' to valid values also for ALSA softvol

ensure that valid mixer values are set also when the ALSA driver does not report a valid dB range ('set_raw' fallback) correct a bug in which volume is assumed to lie in [0..100] instead of [0..1]
parent b14a5141
......@@ -135,6 +135,13 @@ static int set_normalized_volume(snd_mixer_elem_t *elem,
if (err < 0)
return err;
/* two special cases to avoid rounding errors at 0% and
100% */
if (volume <= 0)
return set_raw[ctl_dir](elem, min);
else if (volume >= 1)
return set_raw[ctl_dir](elem, max);
value = lrint_dir(volume * (max - min), dir) + min;
return set_raw[ctl_dir](elem, value);
}
......@@ -143,7 +150,7 @@ static int set_normalized_volume(snd_mixer_elem_t *elem,
100% */
if (volume <= 0)
return set_dB[ctl_dir](elem, min, dir);
else if (volume >= 100)
else if (volume >= 1)
return set_dB[ctl_dir](elem, max, dir);
if (use_linear_dB_scale(min, max)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment