From 5c90086bbd35d1423d28d611e592e5d1a4673fe4 Mon Sep 17 00:00:00 2001 From: philippe44 Date: Tue, 21 Nov 2023 12:52:55 -0800 Subject: [PATCH] sync with upstream/cspot --- .../bell/main/platform/linux/MDNSService.cpp | 1 + components/spotify/cspot/src/SpircHandler.cpp | 12 +++++++----- components/spotify/cspot/src/TrackQueue.cpp | 16 ++++++++-------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/components/spotify/cspot/bell/main/platform/linux/MDNSService.cpp b/components/spotify/cspot/bell/main/platform/linux/MDNSService.cpp index 0a9f36f2..56cf9f0f 100644 --- a/components/spotify/cspot/bell/main/platform/linux/MDNSService.cpp +++ b/components/spotify/cspot/bell/main/platform/linux/MDNSService.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #if __has_include("avahi-client/client.h") #include diff --git a/components/spotify/cspot/src/SpircHandler.cpp b/components/spotify/cspot/src/SpircHandler.cpp index cdf8f736..8d8add6a 100644 --- a/components/spotify/cspot/src/SpircHandler.cpp +++ b/components/spotify/cspot/src/SpircHandler.cpp @@ -201,21 +201,23 @@ void SpircHandler::handleFrame(std::vector& data) { break; } case MessageType_kMessageTypeReplace: { - CSPOT_LOG(debug, "Got replace frame %d", playbackState->remoteTracks.size()); + CSPOT_LOG(debug, "Got replace frame %d", + playbackState->remoteTracks.size()); playbackState->syncWithRemote(); // 1st track is the current one, but update the position bool cleared = trackQueue->updateTracks( playbackState->remoteFrame.state.position_ms + - ctx->timeProvider->getSyncedTimestamp() - - playbackState->innerFrame.state.position_measured_at); + ctx->timeProvider->getSyncedTimestamp() - + playbackState->innerFrame.state.position_measured_at, + false); this->notify(); // need to re-load all if streaming track is completed if (cleared) { - sendEvent(EventType::FLUSH); - trackPlayer->resetState(); + sendEvent(EventType::FLUSH); + trackPlayer->resetState(); } break; } diff --git a/components/spotify/cspot/src/TrackQueue.cpp b/components/spotify/cspot/src/TrackQueue.cpp index d35d94ef..f2860387 100644 --- a/components/spotify/cspot/src/TrackQueue.cpp +++ b/components/spotify/cspot/src/TrackQueue.cpp @@ -609,16 +609,16 @@ bool TrackQueue::updateTracks(uint32_t requestedPosition, bool initial) { playableSemaphore->give(); } else if (preloadedTracks[0]->loading) { - // try to not re-load track if we are still loading it - - // remove everything except first track - preloadedTracks.erase(preloadedTracks.begin() + 1, preloadedTracks.end()); + // try to not re-load track if we are still loading it - // Push a song on the preloaded queue - CSPOT_LOG(info, "Keeping current track %d", currentTracksIndex); - queueNextTrack(1); + // remove everything except first track + preloadedTracks.erase(preloadedTracks.begin() + 1, preloadedTracks.end()); - cleared = false; + // Push a song on the preloaded queue + CSPOT_LOG(info, "Keeping current track %d", currentTracksIndex); + queueNextTrack(1); + + cleared = false; } else { // Clear preloaded tracks preloadedTracks.clear();