Index: server/Slim/Buttons/ScreenSaver.pm =================================================================== --- server/Slim/Buttons/ScreenSaver.pm (revision 3599) +++ server/Slim/Buttons/ScreenSaver.pm (working copy) @@ -116,7 +116,14 @@ } elsif (!$client->power()) { $saver = Slim::Utils::Prefs::clientGet($client,'offsaver'); $saver =~ s/^SCREENSAVER\./OFF\./; - if ($saver eq 'nosaver') { + + my $brightness = $client->brightness(); + if ($mode eq 'off' && $brightness == 0) { + # do nothing - leave in off mode to avoid screen updates while brightness 0 + } elsif ($mode eq $saver && $brightness == 0) { + # pop mode to get back to off mode while brightness 0 + Slim::Buttons::Common::popMode($client); + } elsif ($saver eq 'nosaver') { # do nothing } elsif ($mode ne $saver) { if (Slim::Buttons::Common::validMode($saver)) { Index: server/Slim/Buttons/Power.pm =================================================================== --- server/Slim/Buttons/Power.pm (revision 3599) +++ server/Slim/Buttons/Power.pm (working copy) @@ -55,18 +55,24 @@ } } - # this is a date-time screen, so it should get updated every second - $client->param('modeUpdateInterval', 1); - # switch to power off mode # use our last saved brightness $client->brightness(Slim::Utils::Prefs::clientGet($client, "powerOffBrightness")); - $client->update(); + $client->update(); + + # force screenSaver to run almost imediately to start off screensaver if required + if (Slim::Utils::Timers::killTimers($client, \&Slim::Buttons::ScreenSaver::screenSaver)) { + Slim::Utils::Timers::setTimer($client, Time::HiRes::time() + 0.1, + \&Slim::Buttons::ScreenSaver::screenSaver); + } + } sub lines { + # blank screen my $client = shift; - return Slim::Buttons::Common::dateTime($client); + my $parts = {}; + return $parts; } 1;