Index: Slim/Buttons/ScreenSaver.pm =================================================================== --- Slim/Buttons/ScreenSaver.pm (revision 9652) +++ Slim/Buttons/ScreenSaver.pm (working copy) @@ -44,9 +44,9 @@ $client->update(); # pass along ir code to new mode if requested - if (defined $functarg && $functarg eq 'passback') { +# if (defined $functarg && $functarg eq 'passback') { Slim::Hardware::IR::resendButton($client); - } +# } } ); } @@ -77,11 +77,6 @@ my $timeout = $client->prefGet("screensavertimeout"); my $irtime = Slim::Hardware::IR::lastIRTime($client); - # if we are already in now playing, jump back screensaver is redundant and confusing - if ($saver eq 'screensaver' && $mode eq 'playlist') { - $saver = 'playlist'; - } - # dim the screen if we're not playing... will restore brightness on next IR input. # only ned to do this once, but its hard to ensure all cases, so it might be repeated. if ( $timeout && $display->brightness() && @@ -102,7 +97,9 @@ # don't change modes when none (just dim) is the screensaver. } elsif ($timeout && $irtime < $now - $timeout && - $mode ne $saver && + (($mode ne $saver) || + # in case the saver is 'now playing' and we're browsing another song + ($saver eq 'playlist' && !Slim::Buttons::Playlist::showingNowPlaying($client))) && $mode ne 'screensaver' && # just in case it falls into default, we dont want recursive pushModes $mode ne 'block' && $client->power()) { @@ -110,11 +107,10 @@ # we only go into screensaver mode if we've timed out # and we're not off or blocked if ($saver eq 'playlist') { - if ($mode eq 'playlist') { - Slim::Buttons::Playlist::jump($client); - } else { - Slim::Buttons::Common::pushMode($client,'playlist'); + if ($mode ne 'playlist') { + Slim::Buttons::Common::setMode($client,'playlist'); } + Slim::Buttons::Common::pushMode($client,'screensaver'); } else { if (Slim::Buttons::Common::validMode($saver)) { Slim::Buttons::Common::pushMode($client, $saver);