audiosrc: check for flushing state in provide_clock
authorWim Taymans <wim.taymans@collabora.co.uk>
Mon, 10 Sep 2012 10:12:48 +0000 (12:12 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Mon, 10 Sep 2012 10:19:22 +0000 (12:19 +0200)
Only provide a clock when we are not flushing, this means that we have posted a
PROVIDE_CLOCK message. We used to check if we were acquired but that doesn't
work anymore now that we do the negotiation async in the streaming thread: it's
possible that we are still negotiating when the pipeline asks us for a clock.

gst-libs/gst/audio/gstaudiobasesrc.c

index 38ca28e..d6c956c 100644 (file)
@@ -289,10 +289,11 @@ gst_audio_base_src_provide_clock (GstElement * elem)
   if (src->ringbuffer == NULL)
     goto wrong_state;
 
-  if (!gst_audio_ring_buffer_is_acquired (src->ringbuffer))
+  if (gst_audio_ring_buffer_is_flushing (src->ringbuffer))
     goto wrong_state;
 
   GST_OBJECT_LOCK (src);
+
   if (!GST_OBJECT_FLAG_IS_SET (src, GST_ELEMENT_FLAG_PROVIDE_CLOCK))
     goto clock_disabled;
 
@@ -304,7 +305,7 @@ gst_audio_base_src_provide_clock (GstElement * elem)
   /* ERRORS */
 wrong_state:
   {
-    GST_DEBUG_OBJECT (src, "ringbuffer not acquired");
+    GST_DEBUG_OBJECT (src, "ringbuffer is flushing");
     return NULL;
   }
 clock_disabled: