summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libao2/ao_sun.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/libao2/ao_sun.c b/libao2/ao_sun.c
index d5c54280d0..0a6e6979c8 100644
--- a/libao2/ao_sun.c
+++ b/libao2/ao_sun.c
@@ -279,11 +279,14 @@ static int control(int cmd,int arg){
float volume;
AUDIO_INITINFO(&info);
volume = vol->right > vol->left ? vol->right : vol->left;
- info.play.gain = volume * AUDIO_MAX_GAIN / 100;
- if ( vol->right == vol->left )
- info.play.balance = AUDIO_MID_BALANCE;
- else
- info.play.balance = (vol->right - vol->left + volume) * AUDIO_RIGHT_BALANCE / (2*volume);
+ info.output_muted = (volume == 0);
+ if ( !info.output_muted ) {
+ info.play.gain = volume * AUDIO_MAX_GAIN / 100;
+ if ( vol->right == vol->left )
+ info.play.balance = AUDIO_MID_BALANCE;
+ else
+ info.play.balance = (vol->right - vol->left + volume) * AUDIO_RIGHT_BALANCE / (2*volume);
+ }
ioctl( fd,AUDIO_SETINFO,&info );
close( fd );
return CONTROL_OK;