From: Raymond Yau Date: Mon, 28 Feb 2011 14:36:36 +0000 (+0100) Subject: alsamixer: fix display of active/inactive controls X-Git-Tag: v1.0.25~27 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=cd26f244e7f2648a63411741552c658ca67334e9;p=alsa-utils.git alsamixer: fix display of active/inactive controls Signed-off-by: Raymond Yau Signed-off-by: Clemens Ladisch --- diff --git a/alsamixer/mixer_widget.c b/alsamixer/mixer_widget.c index fb352d3..caaf777 100644 --- a/alsamixer/mixer_widget.c +++ b/alsamixer/mixer_widget.c @@ -59,10 +59,21 @@ enum channel_mask { static int elem_callback(snd_mixer_elem_t *elem, unsigned int mask) { + unsigned int i; + if (mask & (SND_CTL_EVENT_MASK_REMOVE | SND_CTL_EVENT_MASK_INFO | SND_CTL_EVENT_MASK_VALUE)) controls_changed = TRUE; + + if (mask & SND_CTL_EVENT_MASK_INFO) + for (i = 0; i < controls_count; ++i) + if (controls[i].elem == elem) { + controls[i].flags &= ~IS_ACTIVE; + if (snd_mixer_selem_is_active(controls[i].elem)) + controls[i].flags |= IS_ACTIVE; + } + return 0; }