aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-04-25 11:55:36 +0200
committerMax Kellermann <max@duempel.org>2009-04-25 11:55:36 +0200
commit472b994779f30ff75dd2dab913770860fd88cd74 (patch)
tree8f9150d0f1f7b81e6aa883d06055cd859bb95d20
parent70faf5927531099af0701bf5281b37ff861d3e8d (diff)
downloadmpd-472b994779f30ff75dd2dab913770860fd88cd74.tar.gz
mpd-472b994779f30ff75dd2dab913770860fd88cd74.tar.xz
mpd-472b994779f30ff75dd2dab913770860fd88cd74.zip
player_thread: pause when all audio outputs fail to play
When all audio outputs have been closed due to failures, pause the playback instead of stopping it. This way, the user may resume at the current position after the problem has been dealt with.
-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