diff --git a/NEWS b/NEWS index 3960033e2..5d004070a 100644 --- a/NEWS +++ b/NEWS @@ -62,6 +62,7 @@ ver 0.15 (200?/??/??) * playlist_directory and music_directory are optional * playlist: recalculate the queued song after random is toggled * playlist: don't unpause on delete +* pause when all audio outputs fail to play * daemon: ignore "user" setting if already running as that user * listen: fix broken client IP addresses in log * 24/32 bit audio support diff --git a/src/player_thread.c b/src/player_thread.c index 39eb3a385..4ea23020d 100644 --- a/src/player_thread.c +++ b/src/player_thread.c @@ -549,6 +549,12 @@ play_next_chunk(struct player *player) if (!success) { music_buffer_return(player_buffer, chunk); + + /* pause: the user may resume playback as soon as an + audio output becomes available */ + pc.state = PLAYER_STATE_PAUSE; + player->paused = true; + return false; } @@ -708,8 +714,7 @@ static void do_play(void) /* at least one music chunk is ready - send it to the audio output */ - if (!play_next_chunk(&player)) - break; + play_next_chunk(&player); } else if (audio_output_all_check() > 0) { /* not enough data from decoder, but the output thread is still busy, so it's