Commit 70dbc2b0 authored by Max Kellermann's avatar Max Kellermann Committed by Eric Wong

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
parent bf05ce16
......@@ -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) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment