diff options
author | Warren Dukes <warren.dukes@gmail.com> | 2004-03-20 19:47:05 +0000 |
---|---|---|
committer | Warren Dukes <warren.dukes@gmail.com> | 2004-03-20 19:47:05 +0000 |
commit | 6436b0ac8a59914b9edf8987274ef66f69637f36 (patch) | |
tree | 1e10694ebb9933db385f0e93a4a98080028b7d76 /src/decode.c | |
parent | 115b0d06cda83dc6b34cc590ab61501120489a6b (diff) | |
download | mpd-6436b0ac8a59914b9edf8987274ef66f69637f36.tar.gz mpd-6436b0ac8a59914b9edf8987274ef66f69637f36.tar.xz mpd-6436b0ac8a59914b9edf8987274ef66f69637f36.zip |
close audio device on pause
git-svn-id: https://svn.musicpd.org/mpd/trunk@329 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to '')
-rw-r--r-- | src/decode.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/decode.c b/src/decode.c index 19efd6b1e..b80166af4 100644 --- a/src/decode.c +++ b/src/decode.c @@ -180,8 +180,19 @@ void decodeSeek(PlayerControl * pc, AudioFormat * af, DecoderControl * dc, } \ if(pc->pause) { \ pause = !pause; \ - if(pause) pc->state = PLAYER_STATE_PAUSE; \ - else pc->state = PLAYER_STATE_PLAY; \ + if(pause) { \ + finishAudio(); \ + pc->state = PLAYER_STATE_PAUSE; \ + } \ + else { \ + if(initAudio(NULL)<0) { \ + strncpy(pc->erroredFile,pc->file,MAXPATHLEN); \ + pc->error = PLAYER_ERROR_AUDIO; \ + quitDecode(pc,dc); \ + return; \ + } \ + pc->state = PLAYER_STATE_PLAY; \ + } \ pc->pause = 0; \ kill(getppid(),SIGUSR1); \ } \ @@ -296,7 +307,6 @@ void decode() { { /* PARENT */ - char silence[CHUNK_SIZE]; int pause = 0; int quit = 0; int bbp = buffered_before_play; @@ -306,8 +316,6 @@ void decode() { int nextChunk = -1; int test; - memset(silence,0,CHUNK_SIZE); - if(waitOnDecode(pc,af,dc,cb)<0) return; pc->state = PLAYER_STATE_PLAY; @@ -348,9 +356,7 @@ void decode() { } else doCrossFade = -1; } - if(pause) { - if(playAudio(silence,CHUNK_SIZE)<0) quit = 1; - } + if(pause) usleep(10000); else if((cb->begin!=cb->end || cb->wrap) && cb->begin!=cb->next) { |