Index: Control/Queries.pm =================================================================== --- Control/Queries.pm (revision 33861) +++ Control/Queries.pm (working copy) @@ -1059,6 +1059,7 @@ my $subs = $self->getParam('subscribe'); my $type = $request->getParam('_type'); my $parts = $request->getParam('_parts'); + my $duration = $request->getParam('_duration'); # check displaynotify type against subscription ('showbriefly', 'update', 'bits', 'all') if ($subs eq $type || ($subs eq 'bits' && $type ne 'showbriefly') || $subs eq 'all') { @@ -1074,6 +1075,7 @@ # store display info in subscription request so it can be accessed by displaystatusQuery $pd->{'type'} = $type; $pd->{'parts'} = $parts; + $pd->{'duration'} = $duration; # execute the query immediately $self->__autoexecute; @@ -1102,6 +1104,7 @@ my $format= $pd->{'format'}; my $type = $pd->{'type'}; my $parts = $type eq 'showbriefly' ? $pd->{'parts'} : $client->display->renderCache; + my $duration = $pd->{'duration'}; $request->addResult('type', $type); @@ -1143,7 +1146,13 @@ $request->addResult('display', $parts->{'jive'} ); } } else { - $request->addResult('display', { 'text' => $screen1->{'line'} || $screen1->{'center'} }); + my $display = { + 'text' => $screen1->{'line'} || $screen1->{'center'} + }; + + $display->{duration} = $duration if $duration; + + $request->addResult('display', $display); } } Index: Control/Request.pm =================================================================== --- Control/Request.pm (revision 33861) +++ Control/Request.pm (working copy) @@ -653,7 +653,7 @@ addDispatch(['library', 'changed', '_newvalue'], [0, 0, 0, undef]); addDispatch(['unknownir', '_ircode', '_time'], [1, 0, 0, undef]); addDispatch(['prefset', '_namespace', '_prefname', '_newvalue'], [0, 0, 1, undef]); - addDispatch(['displaynotify', '_type', '_parts'], [1, 0, 0, undef]); + addDispatch(['displaynotify', '_type', '_parts', '_duration'], [1, 0, 0, undef]); addDispatch(['alarm', 'sound', '_id'], [1, 0, 0, undef]); addDispatch(['alarm', 'end', '_id'], [1, 0, 0, undef]); addDispatch(['alarm', 'snooze', '_id'], [1, 0, 0, undef]); Index: Display/Display.pm =================================================================== --- Display/Display.pm (revision 33861) +++ Display/Display.pm (working copy) @@ -283,7 +283,7 @@ # notify cli/jive of the show briefly message if ($display->notifyLevel >= 1) { - $display->notify('showbriefly', $parts); + $display->notify('showbriefly', $parts, $duration); } if ($firstLine && ($display->linesPerScreen() == 1)) { @@ -904,9 +904,10 @@ my $display = shift; my $type = shift; my $info = shift; + my $duration= shift; # send a notification for this display update to 'displaystatus' queries - Slim::Control::Request->new($display->client->id, ['displaynotify', $type, $info])->notify('displaystatus'); + Slim::Control::Request->new($display->client->id, ['displaynotify', $type, $info, $duration])->notify('displaystatus'); } =head1 SEE ALSO Index: Display/NoDisplay.pm =================================================================== --- Display/NoDisplay.pm (revision 33861) +++ Display/NoDisplay.pm (working copy) @@ -62,6 +62,16 @@ sub maxBrightness {} sub symbols {return $_[1];} + +sub notify { + my ($display, $type, $info, $duration) = @_; + + # Squeezeplay is expecting duration in milliseconds - we're going to assume any value < 1000 to be seconds + $duration *= 1000 if $duration && $duration < 1000; + + $display->SUPER::notify($type, $info, $duration) +} + =head1 SEE ALSO L