|  | @@ -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;
 |