Index: src/squeezeplay/share/jive/audio/Playback.lua =================================================================== --- src/squeezeplay/share/jive/audio/Playback.lua (revision 8763) +++ src/squeezeplay/share/jive/audio/Playback.lua (working copy) @@ -208,8 +208,8 @@ status.serverTimestamp = serverTimestamp status.signalStrength = self.signalStrength - self.slimproto:send(status) self.statusTimestamp = Framework:getTicks() + return self.slimproto:send(status) end @@ -272,11 +272,13 @@ self:sendStatus(status, "STMn") end - log:debug("status DECODE UNDERRUN") - self:sendStatus(status, "STMd") - - self.sentDecoderUnderrunEvent = true - self.sentDecoderFullEvent = false + if self:sendStatus(status, "STMd") then + log:debug("status DECODE UNDERRUN") + self.sentDecoderUnderrunEvent = true + self.sentDecoderFullEvent = false + else + log:debug("defer status DECODE UNDERRUN") + end decode:songEnded() end @@ -302,11 +304,13 @@ if not self.sentAudioUnderrunEvent and self.sentDecoderUnderrunEvent then - log:debug("status AUDIO UNDERRUN") - decode:stop() - self:sendStatus(status, "STMu") - - self.sentAudioUnderrunEvent = true + if self:sendStatus(status, "STMu") then + log:debug("status AUDIO UNDERRUN") + decode:stop() + self.sentAudioUnderrunEvent = true + else + log:debug("defer status AUDIO UNDERRUN") + end elseif not self.sentOutputUnderrunEvent and self.stream then @@ -311,11 +315,13 @@ elseif not self.sentOutputUnderrunEvent and self.stream then - log:info("output underrun") - decode:pauseAudio(0) -- auto-pause to prevent glitches - self:sendStatus(status, "STMo") - - self.sentOutputUnderrunEvent = true + if self:sendStatus(status, "STMo") then + log:info("status OUTPUT UNDERRUN") + decode:pauseAudio(0) -- auto-pause to prevent glitches + self.sentOutputUnderrunEvent = true + else + log:info("defer status OUTPUT UNDERRUN") + end end else self.sentOutputUnderrunEvent = false @@ -328,10 +334,12 @@ and status.audioState & DECODE_STOPPING == 0 and (self.tracksStarted < status.tracksStarted) then - log:debug("status TRACK STARTED (elapsed: ", status.elapsed, ")") - self:sendStatus(status, "STMs") - - self.tracksStarted = status.tracksStarted + if self:sendStatus(status, "STMs") then + log:debug("status TRACK STARTED (elapsed: ", status.elapsed, ")") + self.tracksStarted = status.tracksStarted + else + log:debug("defer status TRACK STARTED") + end end -- We can begin decoding with 2K of data @@ -387,10 +395,12 @@ elseif not self.sentDecoderFullEvent then -- Tell SC decoder buffer is full - log:debug("status FULL") - self:sendStatus(status, "STMl") - - self.sentDecoderFullEvent = true + if self:sendStatus(status, "STMl") then + log:debug("status FULL") + self.sentDecoderFullEvent = true + else + log:debug("defer status FULL") + end end end