|
@@ -591,15 +591,14 @@ bool TrackQueue::updateTracks(uint32_t requestedPosition, bool initial) {
|
|
|
std::scoped_lock lock(tracksMutex);
|
|
|
bool cleared = true;
|
|
|
|
|
|
+ // Copy requested track list
|
|
|
+ currentTracks = playbackState->remoteTracks;
|
|
|
+ currentTracksIndex = playbackState->innerFrame.state.playing_track_index;
|
|
|
+
|
|
|
if (initial) {
|
|
|
// Clear preloaded tracks
|
|
|
preloadedTracks.clear();
|
|
|
|
|
|
- // Copy requested track list
|
|
|
- currentTracks = playbackState->remoteTracks;
|
|
|
-
|
|
|
- currentTracksIndex = playbackState->innerFrame.state.playing_track_index;
|
|
|
-
|
|
|
if (currentTracksIndex < currentTracks.size()) {
|
|
|
// Push a song on the preloaded queue
|
|
|
queueNextTrack(0, requestedPosition);
|
|
@@ -609,28 +608,24 @@ bool TrackQueue::updateTracks(uint32_t requestedPosition, bool initial) {
|
|
|
notifyPending = true;
|
|
|
|
|
|
playableSemaphore->give();
|
|
|
- } else {
|
|
|
- // Copy requested track list
|
|
|
- currentTracks = playbackState->remoteTracks;
|
|
|
-
|
|
|
- // try to not re-load track if we are still loading it
|
|
|
- if (preloadedTracks[0]->loading) {
|
|
|
+ } 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());
|
|
|
|
|
|
// Push a song on the preloaded queue
|
|
|
- CSPOT_LOG(info, "Keeping current track");
|
|
|
+ CSPOT_LOG(info, "Keeping current track %d", currentTracksIndex);
|
|
|
queueNextTrack(1);
|
|
|
|
|
|
cleared = false;
|
|
|
- } else {
|
|
|
- // Clear preloaded tracks
|
|
|
- preloadedTracks.clear();
|
|
|
+ } else {
|
|
|
+ // Clear preloaded tracks
|
|
|
+ preloadedTracks.clear();
|
|
|
|
|
|
- // Push a song on the preloaded queue
|
|
|
- CSPOT_LOG(info, "Re-loading current track");
|
|
|
- queueNextTrack(0, requestedPosition);
|
|
|
- }
|
|
|
+ // Push a song on the preloaded queue
|
|
|
+ CSPOT_LOG(info, "Re-loading current track");
|
|
|
+ queueNextTrack(0, requestedPosition);
|
|
|
}
|
|
|
|
|
|
return cleared;
|