diff options
author | Max Kellermann <max@duempel.org> | 2011-08-23 22:44:43 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2011-08-23 22:45:47 +0200 |
commit | 25686e5bcee030a1e17f797f75258f26594bab39 (patch) | |
tree | 6bb9a94740343c56e32a76c910d437d71644b65e | |
parent | 8d70f808d981f34adef23d1e57b5b5fc9223c05b (diff) | |
download | mpd-25686e5bcee030a1e17f797f75258f26594bab39.tar.gz mpd-25686e5bcee030a1e17f797f75258f26594bab39.tar.xz mpd-25686e5bcee030a1e17f797f75258f26594bab39.zip |
pulse/output: fix deadlock when resuming the stream
Unlock the mainloop in all code paths.
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | src/output/pulse_output_plugin.c | 4 |
2 files changed, 4 insertions, 1 deletions
@@ -13,6 +13,7 @@ ver 0.16.4 (2011/??/??) * output: - alsa: fix SIGFPE when alsa announces a period size of 0 - httpd: don't warn on client disconnect + - pulse: fix deadlock when resuming the stream ver 0.16.3 (2011/06/04) diff --git a/src/output/pulse_output_plugin.c b/src/output/pulse_output_plugin.c index d29fbd705..2635ed149 100644 --- a/src/output/pulse_output_plugin.c +++ b/src/output/pulse_output_plugin.c @@ -683,8 +683,10 @@ pulse_output_play(void *data, const void *chunk, size_t size, GError **error_r) /* unpause if previously paused */ if (pulse_output_stream_is_paused(po) && - !pulse_output_stream_pause(po, false, error_r)) + !pulse_output_stream_pause(po, false, error_r)) { + pa_threaded_mainloop_unlock(po->mainloop); return 0; + } /* wait until the server allows us to write */ |