From 96dc0a318afc5eba581696640a50f652cc3fc964 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 4 Feb 2013 10:15:34 +0100 Subject: player_thread: implement missing "idle" events on output errors When all outputs fail, MPD automatically pauses playback, but did not emit the IDLE_PLAYER event. Thus, clients were not woken up. (Mantis 3665) --- src/player_thread.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/player_thread.c b/src/player_thread.c index 707fb27a..593788ca 100644 --- a/src/player_thread.c +++ b/src/player_thread.c @@ -326,6 +326,8 @@ player_open_output(struct player *player) pc->state = PLAYER_STATE_PAUSE; player_unlock(pc); + idle_add(IDLE_PLAYER); + return false; } } @@ -800,6 +802,8 @@ play_next_chunk(struct player *player) player_unlock(pc); + idle_add(IDLE_PLAYER); + return false; } @@ -845,13 +849,17 @@ player_song_border(struct player *player) struct player_control *const pc = player->pc; player_lock(pc); - if (pc->border_pause) { + const bool border_pause = pc->border_pause; + if (border_pause) { player->paused = true; pc->state = PLAYER_STATE_PAUSE; } player_unlock(pc); + if (border_pause) + idle_add(IDLE_PLAYER); + return true; } -- cgit v1.2.3