1
0
mirror of https://github.com/SuperBFG7/ympd synced 2025-11-21 15:54:49 +00:00

Fix: refresh queue length after queue edit

This commit is contained in:
jcorporation
2018-08-27 20:34:21 +01:00
parent 7e300d5be9
commit 2686587b04
3 changed files with 36 additions and 22 deletions

View File

@@ -282,7 +282,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg) {
case MPD_API_QUEUE_LIST:
je = json_scanf(msg.p, msg.len, "{data: {offset: %u }}", &uint_buf1);
if (je == 1) {
n = mympd_put_queue(mpd.buf, uint_buf1);
n = mympd_put_queue(mpd.buf, uint_buf1, &mpd.queue_version, &mpd.queue_length);
}
break;
case MPD_API_PLAYER_CURRENT_SONG:
@@ -1125,14 +1125,18 @@ int mympd_put_songdetails(char *buffer, char *uri) {
return len;
}
int mympd_put_queue(char *buffer, unsigned int offset) {
int mympd_put_queue(char *buffer, unsigned int offset, unsigned *queue_version, unsigned *queue_length) {
struct mpd_entity *entity;
unsigned long totalTime = 0;
unsigned long entity_count = 0;
unsigned long entities_returned = 0;
int len;
struct json_out out = JSON_OUT_BUF(buffer, MAX_SIZE);
struct mpd_status *status = mpd_run_status(mpd.conn);
if (!status)
RETURN_ERROR_AND_RECOVER("mpd_run_status");
if (!mpd_send_list_queue_range_meta(mpd.conn, offset, offset + MAX_ELEMENTS_PER_PAGE))
RETURN_ERROR_AND_RECOVER("mpd_send_list_queue_meta");
@@ -1163,11 +1167,15 @@ int mympd_put_queue(char *buffer, unsigned int offset) {
len += json_printf(&out, "], totalTime: %d, totalEntities: %d, offset: %d, returnedEntities: %d, queue_version: %d}",
totalTime,
mpd.queue_length,
mpd_status_get_queue_length(status),
offset,
entities_returned,
mpd.queue_version
mpd_status_get_queue_version(status)
);
*queue_version = mpd_status_get_queue_version(status);
*queue_length = mpd_status_get_queue_length(status);
mpd_status_free(status);
if (len > MAX_SIZE)
printf("Buffer truncated\n");

View File

@@ -175,7 +175,7 @@ int mympd_get_updatedb_state(char *buffer);
int mympd_put_state(char *buffer, int *current_song_id, int *next_song_id, int *last_song_id, unsigned *queue_version, unsigned *queue_length);
int mympd_put_outputs(char *buffer);
int mympd_put_current_song(char *buffer);
int mympd_put_queue(char *buffer, unsigned int offset);
int mympd_put_queue(char *buffer, unsigned int offset, unsigned *queue_version, unsigned *queue_length);
int mympd_put_browse(char *buffer, char *path, unsigned int offset, char *filter);
int mympd_search(char *buffer, char *mpdtagtype, unsigned int offset, char *searchstr);
int mympd_search_add(char *buffer, char *mpdtagtype, char *searchstr);