On Tue, 2011-07-19 at 20:33 +0100, Colin Guthrie wrote: > Tanu, > > Does this look right for the left over bits.... I appreciate it may > actually make sense to do David's off+zero -> constant thing as it would > keep some of the comparison bit much simpler, but this is an > optimisation we can do after 1.0 is out :) > > In the mean time: > > > diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c > index 20e6194..9470ecf 100644 > --- a/src/modules/alsa/alsa-mixer.c > +++ b/src/modules/alsa/alsa-mixer.c > @@ -2911,9 +2911,10 @@ static pa_bool_t > enumeration_is_subset(pa_alsa_option *a_options, pa_alsa_option > /** > * Compares two elements to see if a is a subset of b > */ > -static pa_bool_t element_is_subset(pa_alsa_element *a, pa_alsa_element > *b) { > +static pa_bool_t element_is_subset(pa_alsa_element *a, pa_alsa_element > *b, snd_mixer_t *m) { > pa_assert(a); > pa_assert(b); > + pa_assert(m); > > /* General rules: > * Every state is a subset of itself (with caveats for > volume_limits and options) > @@ -2938,10 +2939,29 @@ static pa_bool_t > element_is_subset(pa_alsa_element *a, pa_alsa_element *b) { > if (a->volume_use == PA_ALSA_VOLUME_CONSTANT) > a_limit = a->constant_volume; We support negative constant volumes, which means that if b's use is "merge" and b has a non-negative volume limit, then this code may erroneously not regard a as a subset of b. The actual changes in this patch seemed good. -- Tanu