Commit cde4cb94 authored by Vladimir S Eremin's avatar Vladimir S Eremin Committed by Max Kellermann

playlist: provide information about "next song"

In random mode, this patch allows clients to see the "next song" in the queue.
parent b3589629
...@@ -62,6 +62,8 @@ ...@@ -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, ...@@ -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) ...@@ -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); ...@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment