=== applets/NowPlaying/NowPlayingApplet.lua ================================================================== --- applets/NowPlaying/NowPlayingApplet.lua (revision 37582) +++ applets/NowPlaying/NowPlayingApplet.lua (local) @@ -690,11 +690,13 @@ end local volume = tonumber(self.player:getVolume()) - local sliderVolume = self.volSlider:getValue() - if sliderVolume ~= volume then - log:debug("new volume from player: ", volume) - self.volumeOld = volume - self.volSlider:setValue(volume) + if self.volSlider then + local sliderVolume = self.volSlider:getValue() + if sliderVolume ~= volume then + log:debug("new volume from player: ", volume) + self.volumeOld = volume + self.volSlider:setValue(volume) + end end end === applets/Playback/PlaybackApplet.lua ================================================================== --- applets/Playback/PlaybackApplet.lua (revision 37582) +++ applets/Playback/PlaybackApplet.lua (local) @@ -97,7 +97,15 @@ self:tieAndShowWindow(window) end +function storeLocalPlayer(self, player) + log:warn("Storing player name of ", player:getName(), " for LocalPlayer") + local settings = self:getSettings() + settings.playerInit = player and player:getInit() + self:storeSettings() +end + + local decoders = { ['p'] = 'wav', ['f'] = 'flac', === applets/Playback/PlaybackMeta.lua ================================================================== --- applets/Playback/PlaybackMeta.lua (revision 37582) +++ applets/Playback/PlaybackMeta.lua (local) @@ -64,6 +64,8 @@ -- this allows us to share state with the applet meta.state = {} + meta:registerService('storeLocalPlayer') + if not System:hasAudioByDefault() then jiveMain:addItem(meta:menuItem('audioPlayback', 'advancedSettingsBetaFeatures', "AUDIO_PLAYBACK", function(applet, ...) applet:settingsShow(meta.state) end)) end === applets/SlimDiscovery/SlimDiscoveryApplet.lua ================================================================== --- applets/SlimDiscovery/SlimDiscoveryApplet.lua (revision 37582) +++ applets/SlimDiscovery/SlimDiscoveryApplet.lua (local) @@ -609,6 +609,12 @@ Player:setCurrentPlayer(player) end +function storeCurrentPlayer(self, player) + log:warn("storing current player in SlimDiscovery's settings") + local settings = self:getSettings() + settings.playerInit = player and player:getInit() + self:storeSettings() +end function discoverPlayers(self) self:_setState("probing_player") === applets/SlimDiscovery/SlimDiscoveryMeta.lua ================================================================== --- applets/SlimDiscovery/SlimDiscoveryMeta.lua (revision 37582) +++ applets/SlimDiscovery/SlimDiscoveryMeta.lua (local) @@ -47,6 +47,7 @@ function registerApplet(meta) meta:registerService("getCurrentPlayer") meta:registerService("setCurrentPlayer") + meta:registerService("storeCurrentPlayer") meta:registerService("discoverPlayers") meta:registerService("discoverServers") === jive/audio/Playback.lua ================================================================== --- jive/audio/Playback.lua (revision 37582) +++ jive/audio/Playback.lua (local) @@ -12,6 +12,7 @@ local Stream = require("squeezeplay.stream") local Rtmp = require("jive.audio.Rtmp") local SlimProto = require("jive.net.SlimProto") +local Player = require("jive.slim.Player") local Task = require("jive.ui.Task") local Timer = require("jive.ui.Timer") @@ -19,6 +20,7 @@ local debug = require("jive.utils.debug") local log = require("jive.utils.log").logger("audio.decode") +local appletManager = require("jive.AppletManager") local iconbar = iconbar @@ -86,6 +88,10 @@ return obj:_aude(data) end) + obj.slimproto:subscribe("setd", function(_, data) + return obj:_setd(data) + end) + obj.timer = Timer(100, function() obj:_timerCallback() end) @@ -679,8 +685,33 @@ decode:audioEnable(data.enable) end +function _setd(self, data) + -- only send response if we're queried (no additional data) + if data.command == 0 and #data.packet <= 5 then + -- get playername + local player = Player:getLocalPlayer() + + self.slimproto:send({ + opcode = 'SETD', + data = table.concat({ + string.sub(data.packet, 5, 5), + player:getName() + }) + }) + + -- save the player name to Playback.lua settings (likely unnecessary) + appletManager:callService("storeLocalPlayer", player) + -- save the local player name to SlimDiscovery applet settings if we are currently controlling it + if player == Player:getCurrentPlayer() then + appletManager:callService("storeCurrentPlayer", player) + end + + end +end + + function incrementSequenceNumber(self) self.sequenceNumber = self.sequenceNumber + 1 return self:getCurrentSequenceNumber() === jive/net/SlimProto.lua ================================================================== --- jive/net/SlimProto.lua (revision 37582) +++ jive/net/SlimProto.lua (local) @@ -273,8 +273,16 @@ fixedDigital = fixedDigital, preampAtten = preampAtten, sequenceNumber = sequenceNumber, - } end, + } + end, + setd = function(self, packet) + return { + command = unpackNumber(packet, 5, 1), + packet = packet + } + end, + strm = function(self, packet) return { command = string.sub(packet, 5, 5),