Browse Source

vol_perc: Return "mute" when mixer is muted

This feature was originally removed as part of 52d19f9.
Jody Leonard 9 years ago
parent
commit
393b09644a
1 changed files with 5 additions and 1 deletions
  1. 5 1
      slstatus.c

+ 5 - 1
slstatus.c

@@ -472,6 +472,7 @@ uid(void)
 static char *
 static char *
 vol_perc(const char *card)
 vol_perc(const char *card)
 {
 {
+	int mute;
 	long int vol, max, min;
 	long int vol, max, min;
 	snd_mixer_t *handle;
 	snd_mixer_t *handle;
 	snd_mixer_elem_t *elem;
 	snd_mixer_elem_t *elem;
@@ -495,11 +496,14 @@ vol_perc(const char *card)
 	snd_mixer_handle_events(handle);
 	snd_mixer_handle_events(handle);
 	snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
 	snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
 	snd_mixer_selem_get_playback_volume(elem, 0, &vol);
 	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_selem_id_free(s_elem);
 	snd_mixer_close(handle);
 	snd_mixer_close(handle);
 
 
-	if (max == 0)
+	if (!mute)
+		return smprintf("mute");
+	else if (max == 0)
 		return smprintf("0%%");
 		return smprintf("0%%");
 	else
 	else
 		return smprintf("%lu%%", ((uint_fast16_t)(vol * 100) / max));
 		return smprintf("%lu%%", ((uint_fast16_t)(vol * 100) / max));