Index: Slim/Buttons/ScreenSaver.pm =================================================================== --- Slim/Buttons/ScreenSaver.pm (revision 2701) +++ Slim/Buttons/ScreenSaver.pm (working copy) @@ -48,7 +48,9 @@ my $now = Time::HiRes::time(); - $::d_time && msg("screenSaver idle display " . ( + $::d_time && msg("screenSaver ". + ($client->animating() ? "animating" : "idle"). + " display " . ( $now - Slim::Hardware::IR::lastIRTime($client) - Slim::Utils::Prefs::clientGet($client,"screensavertimeout")) . "(mode:" . Slim::Buttons::Common::mode($client) . ")\n" @@ -81,7 +83,7 @@ $client->brightness($dim); } - if ($client->animating()) { + if ($client->animating() && !$client->scrolling()) { # don't interrupt client side animations } elsif ($mode eq 'block') { # blocked mode handles its own updating of the screen. @@ -123,11 +125,11 @@ } $client->update(); } else { - $client->scrollBottom(); + $client->scrollBottom() unless $client->scrolling(); } } else { # try to scroll the bottom, if necessary - $client->scrollBottom(); + $client->scrollBottom() unless $client->scrolling(); } # Call ourselves again after 1 second Slim::Utils::Timers::setTimer($client, ($now + 1.0), \&screenSaver); Index: Slim/Player/SqueezeboxG.pm =================================================================== --- Slim/Player/SqueezeboxG.pm (revision 2701) +++ Slim/Player/SqueezeboxG.pm (working copy) @@ -582,6 +582,7 @@ $client->killAnimation(); $client->scrollUpdate($parts); $client->animating(1); + $client->scrolling(1); } else { $client->refresh($parts); @@ -653,6 +654,7 @@ $parts->{pauseUntil} = $parts->{refreshTime} + $parts->{pauseInt}; $parts->{scrolling} = undef; } + $client->animating(0); } # fast timer during scroll Slim::Utils::Timers::setTimer($client, $parts->{refreshTime}, \&scrollUpdate, $parts); @@ -667,6 +669,7 @@ Slim::Utils::Timers::killTimers($client, \&update); Slim::Utils::Timers::killTimers($client, \&scrollUpdate); $client->animating(0); + $client->scrolling(0); } sub endAnimation { Index: Slim/Player/Client.pm =================================================================== --- Slim/Player/Client.pm (revision 2701) +++ Slim/Player/Client.pm (working copy) @@ -728,6 +728,7 @@ # 95 is currentPlaylistRender # 96 is currentPlaylistChangeTime $client->[97] = undef; # tempVolume temporary volume setting + $client->[98] = 0; # scrolling/slow animation $::d_protocol && msg("New client connected: $id\n"); $client->lastirtime(0); @@ -1613,4 +1614,9 @@ @_ ? ($r->[96] = shift) : $r->[96]; } +sub scrolling { + my $r = shift; + @_ ? ($r->[98] = shift) : $r->[98]; +} + 1;