Index: server/Slim/Control/Commands.pm =================================================================== --- server/Slim/Control/Commands.pm (revision 26482) +++ server/Slim/Control/Commands.pm (working copy) @@ -555,6 +555,7 @@ # need to un-mute volume $log->info("Unmuting, volume is [$vol]"); + $vol = $prefs->client($client)->get('preMuteVolume'); $prefs->client($client)->set('mute', 0); $fade = 0.3125; @@ -563,6 +564,7 @@ # need to mute volume $log->info("Muting, volume is [$vol]"); + $prefs->client($client)->set('preMuteVolume',$vol); $prefs->client($client)->set('mute', 1); $fade = -0.3125; @@ -573,8 +575,7 @@ for my $eachclient (@buddies) { if ($prefs->client($eachclient)->get('syncVolume')) { - - $eachclient->fade_volume($fade, \&_mixer_mute, [$eachclient]); + Slim::Control::Request::executeRequest($eachclient, ["mixer", "muting", $newvalue]); } } } Index: server/Slim/Player/Player.pm =================================================================== --- server/Slim/Player/Player.pm (revision 26482) +++ server/Slim/Player/Player.pm (working copy) @@ -367,6 +367,11 @@ my $int = 0.05; # interval between volume updates my $vol = abs($prefs->client($client)->get("volume")); + + # un-muting? + if ( ($fade > 0) && ($vol == 0) ) { + $vol = $prefs->client($client)->get('preMuteVolume'); + } my $now = Time::HiRes::time(); Slim::Utils::Timers::killHighTimers($client, \&_fadeVolumeUpdate); @@ -442,18 +447,18 @@ my $vol = $prefs->client($client)->get('volume'); my $mute = $prefs->client($client)->get('mute'); - if (($vol < 0) && ($mute)) { - # mute volume + if ($vol > 0) { + # just muted volume # todo: there is actually a hardware mute feature # in both decoders. Need to add Decoder::mute $client->volume(0); + $prefs->client($client)->set('volume', 0); } else { # un-mute volume - $vol *= -1; - $client->volume($vol); + $vol = $prefs->client($client)->get('preMuteVolume'); + $prefs->client($client)->set('volume', $vol); } - $prefs->client($client)->set('volume', $vol); $client->mixerDisplay('volume'); }