gst-libs/gst/audio/gstbaseaudiosink.c: Starting the ringbuffer when we did not acquir...
authorWim Taymans <wim.taymans@gmail.com>
Mon, 10 Apr 2006 17:05:46 +0000 (17:05 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Mon, 10 Apr 2006 17:05:46 +0000 (17:05 +0000)
Original commit message from CVS:
* 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.

ChangeLog
gst-libs/gst/audio/gstbaseaudiosink.c

index 25c2593..75f7aa1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2006-04-10  Wim Taymans  <wim@fluendo.com>
 
+       * 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  <wim@fluendo.com>
+
        * ext/ogg/gstoggdemux.c: (gst_ogg_pad_src_query),
        (gst_ogg_demux_receive_event), (gst_ogg_pad_event),
        (gst_ogg_demux_chain_peer), (gst_ogg_pad_submit_packet),
index a45b16d..426b11c 100644 (file)
@@ -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;