aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--src/player_thread.c9
2 files changed, 8 insertions, 2 deletions
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