Xinqi Bao's Git

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

slstatus.c

index d442776..efdc9b0 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));