vol_perc: Return "mute" when mixer is muted
authorJody Leonard <me@jodyleonard.com>
Thu, 13 Oct 2016 07:20:36 +0000 (03:20 -0400)
committerJody Leonard <me@jodyleonard.com>
Thu, 13 Oct 2016 07:20:36 +0000 (03:20 -0400)
This feature was originally removed as part of 52d19f9.

slstatus.c

index d4427764b8a2bcb0bd28e26082c44df17ada48d0..efdc9b06a9525e8e1fcf6da22fa8ba0de332cce6 100644 (file)
@@ -472,6 +472,7 @@ uid(void)
 static char *
 vol_perc(const char *card)
 {
+       int mute;
        long int vol, max, min;
        snd_mixer_t *handle;
        snd_mixer_elem_t *elem;
@@ -495,11 +496,14 @@ vol_perc(const char *card)
        snd_mixer_handle_events(handle);
        snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
        snd_mixer_selem_get_playback_volume(elem, 0, &vol);
+       snd_mixer_selem_get_playback_switch(elem, 0, &mute);
 
        snd_mixer_selem_id_free(s_elem);
        snd_mixer_close(handle);
 
-       if (max == 0)
+       if (!mute)
+               return smprintf("mute");
+       else if (max == 0)
                return smprintf("0%%");
        else
                return smprintf("%lu%%", ((uint_fast16_t)(vol * 100) / max));