[Slim-Checkins] r8942 - /trunk/server/Slim/Buttons/Block.pm
adrian at svn.slimdevices.com
adrian at svn.slimdevices.com
Sat Aug 12 05:24:30 PDT 2006
Author: adrian
Date: Sat Aug 12 05:24:28 2006
New Revision: 8942
URL: http://svn.slimdevices.com?rev=8942&view=rev
Log:
Bug: N/A
Description: Improve block animation with 2 screens. Remove overlay
in single screen mode so animation is seen.
Modified:
trunk/server/Slim/Buttons/Block.pm
Modified: trunk/server/Slim/Buttons/Block.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Buttons/Block.pm?rev=8942&r1=8941&r2=8942&view=diff
==============================================================================
--- trunk/server/Slim/Buttons/Block.pm (original)
+++ trunk/server/Slim/Buttons/Block.pm Sat Aug 12 05:24:28 2006
@@ -10,8 +10,10 @@
use Slim::Utils::Misc;
use Slim::Buttons::Common;
+use Storable;
+
my $ticklength = .2; # length of each tick, seconds
-my $tickdelay = 2; # number of updates before animation appears
+my $tickdelay = 1; # number of updates before animation appears
my @tickchars = ('|','/','-','\\');
our %functions = ();
@@ -49,8 +51,11 @@
$client->blocklines( { 'static' => $static, 'parts' => $parts, 'ticks' => 0 } );
+ my $screen2mode = $client->param('screen2');
+
Slim::Buttons::Common::pushMode($client,'block');
$client->modeParam('block.name', $blockName);
+ $client->modeParam('screen2', $screen2mode);
if (defined $parts) {
$client->showBriefly($parts);
@@ -72,6 +77,7 @@
my $bdata = $client->blocklines();
my $parts = $bdata->{'parts'};
+ my $screen1;
if ($bdata->{'static'}) { return $parts };
@@ -82,6 +88,10 @@
# create state for graphics animation if it does not exist - do it here so only done when animation starts
unless (defined $bdata->{'pos'}) {
+
+ $bdata->{'parts'} = $parts = Storable::dclone($parts);
+
+ $screen1 = $parts->{'screen1'} ? $parts->{'screen1'} : $parts;
if ($client->display->isa('Slim::Display::Graphics')) {
# For graphics players animation cycles through characters in one of the following fonts:
@@ -94,23 +104,32 @@
$bdata->{'vfd'} = $vfd;
$bdata->{'chars'} = $chars ? $chars - 1 : ($font = undef);
- if ($parts->{'fonts'} && $parts->{'fonts'}->{"$vfd"} && ref $parts->{'fonts'}->{"$vfd"} ne 'HASH') {
- # expand font definition so we can redefine one component only
- my $basefont = $parts->{'fonts'}->{"$vfd"};
- my $sfonts = $parts->{'fonts'}->{"$vfd"} = {};
- foreach my $c (qw(line overlay center)) {
- foreach my $l (0..$client->display->renderCache()->{'maxLine'}) {
- $sfonts->{"$c"}[$l] = $basefont . "." . ( $l + 1 );
+ if ($screen1->{'fonts'} && $screen1->{'fonts'}->{"$vfd"}) {
+ if (ref $screen1->{'fonts'}->{"$vfd"} ne 'HASH') {
+ # expand font definition so we can redefine one component only
+ my $basefont = $screen1->{'fonts'}->{"$vfd"};
+ my $sfonts = $screen1->{'fonts'}->{"$vfd"} = {};
+ foreach my $c (qw(line overlay center)) {
+ foreach my $l (0..$client->display->renderCache()->{'maxLine'}) {
+ $sfonts->{"$c"}[$l] = $basefont . "." . ( $l + 1 );
+ }
}
}
+ } elsif ($client->display->linesPerScreen == 1) {
+ # clear overlay so animation is seen
+ $screen1->{'overlay'}[1] = undef;
}
- $parts->{'fonts'}->{"$vfd"}->{'overlay'}[0] = $font;
+ $screen1->{'fonts'}->{"$vfd"}->{'overlay'}[0] = $font;
}
$bdata->{'pos'} = -1;
+ } else {
+
+ $screen1 = $parts->{'screen1'} ? $parts->{'screen1'} : $parts;
+
}
if ($bdata->{'chars'}) {
@@ -118,13 +137,13 @@
my $pos = ($bdata->{'pos'} + 1) % $bdata->{'chars'};
my $vfd = $bdata->{'vfd'};
$bdata->{'pos'} = $pos;
- $parts->{'overlay'}[0] = chr($pos + 1);
+ $screen1->{'overlay'}[0] = chr($pos + 1);
} else {
my $pos = int(Time::HiRes::time() / $ticklength) % (@tickchars);
- $parts->{overlay}[0] = $tickchars[$pos];
+ $screen1->{overlay}[0] = $tickchars[$pos];
}
More information about the checkins
mailing list