--- src/modules/alsa/alsa-mixer.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index 3f27fdc..f390119 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -2956,6 +2956,10 @@ static pa_bool_t element_is_subset(pa_alsa_element *a, pa_alsa_element *b, snd_m /* Check the volume_use */ if (a->volume_use != PA_ALSA_VOLUME_IGNORE) { + /* If b cannot control at least the channels of a, a is not a subset of b */ + if (a->merged_mask & ~b->merged_mask) + return FALSE; + /* "Constant" is subset of "Constant" only when their constant values are equal */ if (a->volume_use == PA_ALSA_VOLUME_CONSTANT && b->volume_use == PA_ALSA_VOLUME_CONSTANT && a->constant_volume != b->constant_volume) return FALSE; -- 1.7.4.1