diff options
author | Max Kellermann <max@duempel.org> | 2009-08-14 11:52:12 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-08-14 11:52:12 +0200 |
commit | 7133f560ec24c90671a40c9f9bc9cea6eb31cc17 (patch) | |
tree | 09d34f30a6173ff58afe37ece71bcaaca5d4423f /src/output_control.c | |
parent | 7dddd9beda2bb0505758bb6a32cae6feb3215733 (diff) | |
download | mpd-7133f560ec24c90671a40c9f9bc9cea6eb31cc17.tar.gz mpd-7133f560ec24c90671a40c9f9bc9cea6eb31cc17.tar.xz mpd-7133f560ec24c90671a40c9f9bc9cea6eb31cc17.zip |
output: fixed shout stuck pause bug
Explicitly make the output thread leave the ao_pause() loop. This
patch is a workaround, and the "pause" flag is not managed in a
thread-safe way, but that's good enough for now.
Diffstat (limited to 'src/output_control.c')
-rw-r--r-- | src/output_control.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/output_control.c b/src/output_control.c index eac9bdfcb..16c0dbb75 100644 --- a/src/output_control.c +++ b/src/output_control.c @@ -76,6 +76,17 @@ audio_output_open(struct audio_output *ao, audio_format_equals(audio_format, &ao->in_audio_format)) { assert(ao->pipe == mp); + if (ao->pause) { + /* unpause with the CANCEL command; this is a + hack, but suits well for forcing the thread + to leave the ao_pause() thread, and we need + to flush the device buffer anyway */ + + /* we're not using audio_output_cancel() here, + because that function is asynchronous */ + ao_command(ao, AO_COMMAND_CANCEL); + } + return true; } |