audiotestsrc: call send_event directly
authorWim Taymans <wim.taymans@collabora.co.uk>
Mon, 20 Jul 2009 10:51:30 +0000 (12:51 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Mon, 20 Jul 2009 11:15:32 +0000 (13:15 +0200)
We can't call gst_element_send_event() from a streaming thread as it gets the
state lock. Instead call the send_event method directly until we have a nice API
for this in basesrc.

Fixes #588746

gst/audiotestsrc/gstaudiotestsrc.c

index 3d48557..2abd41a 100644 (file)
@@ -994,6 +994,7 @@ gst_audio_test_src_create (GstBaseSrc * basesrc, guint64 offset,
   GstClockTime next_time;
   gint64 next_sample, next_byte;
   guint bytes, samples;
+  GstElementClass *eclass;
 
   src = GST_AUDIO_TEST_SRC (basesrc);
 
@@ -1006,8 +1007,10 @@ gst_audio_test_src_create (GstBaseSrc * basesrc, guint64 offset,
     gst_tag_list_add (taglist, GST_TAG_MERGE_APPEND,
         GST_TAG_DESCRIPTION, "audiotest wave", NULL);
 
-    gst_element_send_event ((GstElement *) basesrc,
-        gst_event_new_tag (taglist));
+    eclass = GST_ELEMENT_CLASS (parent_class);
+    if (eclass->send_event)
+      eclass->send_event (GST_ELEMENT_CAST (basesrc),
+          gst_event_new_tag (taglist));
     src->tags_pushed = TRUE;
   }