playlist: provide information about "next song"
In random mode, this patch allows clients to see the "next song" in the queue.
This commit is contained in:
		
				
					committed by
					
						
						Max Kellermann
					
				
			
			
				
	
			
			
			
						parent
						
							b358962960
						
					
				
				
					commit
					cde4cb944e
				
			@@ -62,6 +62,8 @@
 | 
			
		||||
#define COMMAND_STATUS_PLAYLIST_LENGTH  "playlistlength"
 | 
			
		||||
#define COMMAND_STATUS_SONG             "song"
 | 
			
		||||
#define COMMAND_STATUS_SONGID           "songid"
 | 
			
		||||
#define COMMAND_STATUS_NEXTSONG         "nextsong"
 | 
			
		||||
#define COMMAND_STATUS_NEXTSONGID       "nextsongid"
 | 
			
		||||
#define COMMAND_STATUS_TIME             "time"
 | 
			
		||||
#define COMMAND_STATUS_BITRATE          "bitrate"
 | 
			
		||||
#define COMMAND_STATUS_ERROR            "error"
 | 
			
		||||
@@ -508,6 +510,14 @@ handle_status(struct client *client,
 | 
			
		||||
			      getPlayerErrorStr());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	song = getPlaylistNextSong(&g_playlist);
 | 
			
		||||
	if (song >= 0) {
 | 
			
		||||
		client_printf(client,
 | 
			
		||||
			      COMMAND_STATUS_NEXTSONG ": %i\n"
 | 
			
		||||
			      COMMAND_STATUS_NEXTSONGID ": %u\n",
 | 
			
		||||
			      song, getPlaylistSongId(&g_playlist, song));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return COMMAND_RETURN_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -334,6 +334,21 @@ int getPlaylistCurrentSong(const struct playlist *playlist)
 | 
			
		||||
	return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int getPlaylistNextSong(const struct playlist *playlist)
 | 
			
		||||
{
 | 
			
		||||
	if (playlist->current >= 0)
 | 
			
		||||
	{
 | 
			
		||||
		if (queue_length(&playlist->queue) > 1)
 | 
			
		||||
			return queue_order_to_position(&playlist->queue,
 | 
			
		||||
					       playlist->current + 1);
 | 
			
		||||
		else if (playlist->queue.repeat == 1)
 | 
			
		||||
			return queue_order_to_position(&playlist->queue,
 | 
			
		||||
					       playlist->current);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
unsigned long
 | 
			
		||||
getPlaylistVersion(const struct playlist *playlist)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -180,6 +180,8 @@ void setPlaylistRandomStatus(struct playlist *playlist, bool status);
 | 
			
		||||
 | 
			
		||||
int getPlaylistCurrentSong(const struct playlist *playlist);
 | 
			
		||||
 | 
			
		||||
int getPlaylistNextSong(const struct playlist *playlist);
 | 
			
		||||
 | 
			
		||||
unsigned
 | 
			
		||||
getPlaylistSongId(const struct playlist *playlist, unsigned song);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user