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_PLAYLIST_LENGTH  "playlistlength"
 | 
				
			||||||
#define COMMAND_STATUS_SONG             "song"
 | 
					#define COMMAND_STATUS_SONG             "song"
 | 
				
			||||||
#define COMMAND_STATUS_SONGID           "songid"
 | 
					#define COMMAND_STATUS_SONGID           "songid"
 | 
				
			||||||
 | 
					#define COMMAND_STATUS_NEXTSONG         "nextsong"
 | 
				
			||||||
 | 
					#define COMMAND_STATUS_NEXTSONGID       "nextsongid"
 | 
				
			||||||
#define COMMAND_STATUS_TIME             "time"
 | 
					#define COMMAND_STATUS_TIME             "time"
 | 
				
			||||||
#define COMMAND_STATUS_BITRATE          "bitrate"
 | 
					#define COMMAND_STATUS_BITRATE          "bitrate"
 | 
				
			||||||
#define COMMAND_STATUS_ERROR            "error"
 | 
					#define COMMAND_STATUS_ERROR            "error"
 | 
				
			||||||
@@ -508,6 +510,14 @@ handle_status(struct client *client,
 | 
				
			|||||||
			      getPlayerErrorStr());
 | 
								      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;
 | 
						return COMMAND_RETURN_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -334,6 +334,21 @@ int getPlaylistCurrentSong(const struct playlist *playlist)
 | 
				
			|||||||
	return -1;
 | 
						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
 | 
					unsigned long
 | 
				
			||||||
getPlaylistVersion(const struct playlist *playlist)
 | 
					getPlaylistVersion(const struct playlist *playlist)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -180,6 +180,8 @@ void setPlaylistRandomStatus(struct playlist *playlist, bool status);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int getPlaylistCurrentSong(const struct playlist *playlist);
 | 
					int getPlaylistCurrentSong(const struct playlist *playlist);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int getPlaylistNextSong(const struct playlist *playlist);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
unsigned
 | 
					unsigned
 | 
				
			||||||
getPlaylistSongId(const struct playlist *playlist, unsigned song);
 | 
					getPlaylistSongId(const struct playlist *playlist, unsigned song);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user