]> git.alsa-project.org Git - alsa-utils.git/commitdiff
alsamixer: fix display of active/inactive controls
authorRaymond Yau <superquad.vortex2@gmail.com>
Mon, 28 Feb 2011 14:36:36 +0000 (15:36 +0100)
committerClemens Ladisch <clemens@ladisch.de>
Mon, 28 Feb 2011 14:36:36 +0000 (15:36 +0100)
Signed-off-by: Raymond Yau <superquad.vortex2@gmail.com>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
alsamixer/mixer_widget.c

index fb352d3e4783f16f696dc60938ea0e6841328a0a..caaf7777f5064b53944ee174f69fe76bcffea744 100644 (file)
@@ -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;
 }