From fb499982c2c5a40cce67189c65bce130fd87e760 Mon Sep 17 00:00:00 2001 From: philippe44 Date: Sat, 21 Mar 2020 13:24:26 -0700 Subject: [PATCH] better screensaver handling - release --- components/squeezelite/display.c | 24 +++++++++++------------- plugin/SqueezeESP32.zip | Bin 7995 -> 8123 bytes plugin/SqueezeESP32/Graphics.pm | 5 ++++- plugin/SqueezeESP32/Player.pm | 6 ++++++ plugin/SqueezeESP32/PlayerSettings.pm | 2 +- plugin/SqueezeESP32/Plugin.pm | 13 +++++++------ plugin/SqueezeESP32/install.xml | 2 +- plugin/repo.xml | 4 ++-- 8 files changed, 32 insertions(+), 24 deletions(-) diff --git a/components/squeezelite/display.c b/components/squeezelite/display.c index b20f1be5..e5f36c82 100644 --- a/components/squeezelite/display.c +++ b/components/squeezelite/display.c @@ -735,12 +735,18 @@ static void grfa_handler(u8_t *data, int len) { int length = htonl(pkt->length); artwork.enable = (length != 0); - - // clean up if we are disabling previously enabled artwork - if (!artwork.enable) { - if (artwork.size) GDS_ClearWindow(display, artwork.x, artwork.y, -1, -1, GDS_COLOR_BLACK); + + // just a config or an actual artwork + if (length < 32) { + if (artwork.enable) { + // this is just to specify artwork coordinates + artwork.x = htons(pkt->x); + artwork.y = htons(pkt->y); + } else if (artwork.size) GDS_ClearWindow(display, artwork.x, artwork.y, -1, -1, GDS_COLOR_BLACK); + + // done in any case return; - } + } // new grfa artwork, allocate memory if (!offset) { @@ -1071,11 +1077,3 @@ static void displayer_task(void *args) { visu.wake -= sleep; } } - - - - - - - - diff --git a/plugin/SqueezeESP32.zip b/plugin/SqueezeESP32.zip index 239a3142e3eebd58fd808a9ea9bf0e730d8fba4f..cb9aa0b308c7906fe33bc59e285e1b59f4de127e 100644 GIT binary patch delta 5390 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 delta 5225 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 zN3init_accessor( modes => $display->build_modes, - vfdmodel => 'graphic-x32', # doesn't matter much + # Only seems to matter for screensaver and update to decide font. Not + # any value is acceptable, so use Boom value which seems to be best + # compromise + vfdmodel => 'graphic-160x32', ); return $display; diff --git a/plugin/SqueezeESP32/Player.pm b/plugin/SqueezeESP32/Player.pm index 3ae11b17..6b6e618c 100644 --- a/plugin/SqueezeESP32/Player.pm +++ b/plugin/SqueezeESP32/Player.pm @@ -13,6 +13,12 @@ sub model { 'squeezeesp32' } sub modelName { 'SqueezeESP32' } sub hasIR { 0 } +sub init { + my $client = shift; + $client->SUPER::init(@_); + Plugins::SqueezeESP32::Plugin::config_artwork($client); +} + # Allow the player to define it's display width (and probably more) sub playerSettingsFrame { my $client = shift; diff --git a/plugin/SqueezeESP32/PlayerSettings.pm b/plugin/SqueezeESP32/PlayerSettings.pm index eb95f098..ce41c608 100644 --- a/plugin/SqueezeESP32/PlayerSettings.pm +++ b/plugin/SqueezeESP32/PlayerSettings.pm @@ -59,7 +59,7 @@ sub handler { if ($artwork->{'enable'}) { Plugins::SqueezeESP32::Plugin::update_artwork($client, 1); } else { - Plugins::SqueezeESP32::Plugin::disable_artwork($client); + Plugins::SqueezeESP32::Plugin::config_artwork($client); } } diff --git a/plugin/SqueezeESP32/Plugin.pm b/plugin/SqueezeESP32/Plugin.pm index 3e845542..36627ad0 100644 --- a/plugin/SqueezeESP32/Plugin.pm +++ b/plugin/SqueezeESP32/Plugin.pm @@ -50,7 +50,7 @@ sub onNotification { sub update_artwork { my $client = shift; - my $force = shift || 0; + my $params = { force => shift || 0 }; my $cprefs = $prefs->client($client); my $artwork = $cprefs->get('artwork'); @@ -60,17 +60,17 @@ sub update_artwork { $s = min($s, $cprefs->get('width') - $artwork->{'x'}); my $path = 'music/current/cover_' . $s . 'x' . $s . '_o.jpg'; - my $body = Slim::Web::Graphics::artworkRequest($client, $path, $force, \&send_artwork, undef, HTTP::Response->new); + my $body = Slim::Web::Graphics::artworkRequest($client, $path, $params, \&send_artwork, undef, HTTP::Response->new); send_artwork($client, undef, \$body) if $body; } sub send_artwork { - my ($client, $force, $dataref) = @_; + my ($client, $params, $dataref) = @_; # I'm not sure why we are called so often, so only send when needed my $md5 = md5($$dataref); - return if $client->pluginData('artwork_md5') eq $md5 && !$force; + return if $client->pluginData('artwork_md5') eq $md5 && !$params->{'force'}; $client->pluginData('artwork', $dataref); $client->pluginData('artwork_md5', $md5); @@ -95,9 +95,10 @@ sub send_artwork { } } -sub disable_artwork { +sub config_artwork { my ($client) = @_; - my $header = pack('N', 0); + my $artwork = $prefs->client($client)->get('artwork'); + my $header = pack('Nnn', $artwork->{'enable'}, $artwork->{'x'}, $artwork->{'y'}); $client->sendFrame( grfa => \$header ); } diff --git a/plugin/SqueezeESP32/install.xml b/plugin/SqueezeESP32/install.xml index d28e7f08..c716a398 100644 --- a/plugin/SqueezeESP32/install.xml +++ b/plugin/SqueezeESP32/install.xml @@ -10,6 +10,6 @@ PLUGIN_SQUEEZEESP32 PLUGIN_SQUEEZEESP32_DESC Plugins::SqueezeESP32::Plugin - 0.50 + 0.51 Philippe diff --git a/plugin/repo.xml b/plugin/repo.xml index b0266385..e3d90668 100644 --- a/plugin/repo.xml +++ b/plugin/repo.xml @@ -1,10 +1,10 @@ - + https://github.com/sle118/squeezelite-esp32 Philippe - 47feaf69a40ad4f87c58b34212d71e60dca99d3e + 22551488cdbe02c7a357b2b520f8d377af9cb7d3 philippe_44@outlook.com SqueezeESP32 additional player id (100) http://github.com/sle118/squeezelite-esp32/raw/master/plugin/SqueezeESP32.zip