diff --git a/ChangeLog b/ChangeLog index 25c2593b34..75f7aa1efc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-04-10 Wim Taymans + + * gst-libs/gst/audio/gstbaseaudiosink.c: + (gst_base_audio_sink_event): + Starting the ringbuffer when we did not acquire it can cause + a deadlock, is pointless and causes nasty things for + subclasses. + Fixes gst-launch audiotestsrc num-buffers=0 ! alsasink. + 2006-04-10 Wim Taymans * ext/ogg/gstoggdemux.c: (gst_ogg_pad_src_query), diff --git a/gst-libs/gst/audio/gstbaseaudiosink.c b/gst-libs/gst/audio/gstbaseaudiosink.c index a45b16d5ac..426b11ccbc 100644 --- a/gst-libs/gst/audio/gstbaseaudiosink.c +++ b/gst-libs/gst/audio/gstbaseaudiosink.c @@ -402,8 +402,10 @@ gst_base_audio_sink_event (GstBaseSink * bsink, GstEvent * event) gst_ring_buffer_set_flushing (sink->ringbuffer, FALSE); break; case GST_EVENT_EOS: - /* need to start playback when we reach EOS */ - gst_ring_buffer_start (sink->ringbuffer); + /* need to start playback when we reach EOS, but only when + * we have successfully negotiated a format. */ + if (gst_ring_buffer_is_acquired (sink->ringbuffer)) + gst_ring_buffer_start (sink->ringbuffer); /* now wait till we played everything */ gst_base_audio_sink_drain (sink); break;