diff src/alsa/audio.c @ 555:279846578fdc trunk

[svn] If we are controlling a mono mixer component, ignore balance gracefully rather than muting the audio when the slider is moved to the left.
author chainsaw
date Sat, 27 Jan 2007 16:37:02 -0800
parents 5d3f4b156197
children c7daa70ffe7e
line wrap: on
line diff
--- a/src/alsa/audio.c	Sat Jan 27 06:48:17 2007 -0800
+++ b/src/alsa/audio.c	Sat Jan 27 16:37:02 2007 -0800
@@ -523,10 +523,22 @@
 	if (!pcm_element)
 		return;
 
-	snd_mixer_selem_set_playback_volume(pcm_element,
-					    SND_MIXER_SCHN_FRONT_LEFT, l);
-	snd_mixer_selem_set_playback_volume(pcm_element,
-					    SND_MIXER_SCHN_FRONT_RIGHT, r);
+	if (snd_mixer_selem_is_playback_mono(pcm_element))
+	{
+		if (l > r)
+			snd_mixer_selem_set_playback_volume(pcm_element,
+							    SND_MIXER_SCHN_MONO, l);
+		else
+			snd_mixer_selem_set_playback_volume(pcm_element,
+							    SND_MIXER_SCHN_MONO, r);
+	}
+	else
+	{
+		snd_mixer_selem_set_playback_volume(pcm_element,
+						    SND_MIXER_SCHN_FRONT_LEFT, l);
+		snd_mixer_selem_set_playback_volume(pcm_element,
+						    SND_MIXER_SCHN_FRONT_RIGHT, r);
+	}
 
 	if (snd_mixer_selem_has_playback_switch(pcm_element))
 	{