aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-03-26 10:38:58 +0000
committerEric Wong <normalperson@yhbt.net>2008-03-26 10:38:58 +0000
commit70dbc2b0e76f479961bd0ac326ee6a5d009cc170 (patch)
treee6e019ac7b5723173a3a378cb580a183ce7c4c83 /src
parentbf05ce161fb0ace60aa621b6e5dae00b49729b29 (diff)
downloadmpd-70dbc2b0e76f479961bd0ac326ee6a5d009cc170.tar.gz
mpd-70dbc2b0e76f479961bd0ac326ee6a5d009cc170.tar.xz
mpd-70dbc2b0e76f479961bd0ac326ee6a5d009cc170.zip
send notify signal after SIGCONT
When the decoder receives SIGCONT during waitNotify(), the kernel restarts the read() system call. This lets the decoder process block indefinitely, while the player process waits for it to react. This should probably be solved with a proper signal handler which aborts the read() system call, but for now, we just write to the pipe to make it wake up. git-svn-id: https://svn.musicpd.org/mpd/trunk@7216 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src')
-rw-r--r--src/decode.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/decode.c b/src/decode.c
index 3681e8025..180212d49 100644
--- a/src/decode.c
+++ b/src/decode.c
@@ -65,6 +65,7 @@ static void stopDecode(DecoderControl * dc)
if (decode_pid > 0 && (dc->start || dc->state != DECODE_STATE_STOP)) {
dc->stop = 1;
kill(decode_pid, SIGCONT);
+ signalNotify(&(getPlayerData()->buffer.notify));
while (decode_pid > 0 && dc->stop)
my_usleep(10000);
}
@@ -202,6 +203,7 @@ static int decodeSeek(PlayerControl * pc, DecoderControl * dc,
dc->seekError = 0;
dc->seek = 1;
kill(decode_pid, SIGCONT);
+ signalNotify(&(getPlayerData()->buffer.notify));
while (decode_pid > 0 && dc->seek)
my_usleep(10000);
if (!dc->seekError) {