diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ext/pulse/pulsesink.c | 11 |
2 files changed, 11 insertions, 7 deletions
@@ -1,5 +1,12 @@ 2009-01-05 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * ext/pulse/pulsesink.c: (gst_pulsesink_destroy_stream): + Don't wait for the pulse mainloop when destroying the stream. + Fixes a deadlock when the pulsedaemon goes away while pulsesink + is PLAYING. Fixes bug #556986. + +2009-01-05 Sebastian Dröge <sebastian.droege@collabora.co.uk> + Patch by: Sascha Hauer <s dot hauer at pengutronix dot de> Luotao Fu <l dot fu at pengutronix dot de> diff --git a/ext/pulse/pulsesink.c b/ext/pulse/pulsesink.c index b5b980f1..282ce25a 100644 --- a/ext/pulse/pulsesink.c +++ b/ext/pulse/pulsesink.c @@ -279,7 +279,6 @@ gst_pulsesink_destroy_stream (GstPulseSink * pulsesink) { if (pulsesink->stream) { pa_stream_disconnect (pulsesink->stream); - pa_threaded_mainloop_wait (pulsesink->mainloop); pa_stream_unref (pulsesink->stream); pulsesink->stream = NULL; } @@ -588,16 +587,14 @@ gst_pulsesink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec) if (!pulsesink->context || pa_context_get_state (pulsesink->context) != PA_CONTEXT_READY) { GST_ELEMENT_ERROR (pulsesink, RESOURCE, FAILED, ("Bad context state: %s", - pulsesink-> - context ? pa_strerror (pa_context_errno (pulsesink->context)) : - NULL), (NULL)); + pulsesink->context ? pa_strerror (pa_context_errno (pulsesink-> + context)) : NULL), (NULL)); goto unlock_and_fail; } if (!(pulsesink->stream = pa_stream_new (pulsesink->context, - pulsesink-> - stream_name ? pulsesink->stream_name : "Playback Stream", - &pulsesink->sample_spec, + pulsesink->stream_name ? pulsesink-> + stream_name : "Playback Stream", &pulsesink->sample_spec, gst_pulse_gst_to_channel_map (&channel_map, spec)))) { GST_ELEMENT_ERROR (pulsesink, RESOURCE, FAILED, ("Failed to create stream: %s", |