2 * this tests that get-based pads don't push.
7 typedef struct _GstTestSrc
13 typedef GstElementClass GstTestSrcClass;
16 gst_test_src_class_init (GstTestSrcClass * klass)
20 gst_test_src_base_init (gpointer klass)
25 gst_test_src_get (GstPad * pad)
29 event = gst_event_new (GST_EVENT_INTERRUPT);
30 gst_event_ref (event);
31 gst_pad_push (pad, GST_DATA (event));
33 return GST_DATA (event);
37 gst_test_src_init (GstTestSrc * src)
39 src->srcpad = gst_pad_new ("src", GST_PAD_SRC);
40 gst_pad_set_get_function (src->srcpad, gst_test_src_get);
41 gst_element_add_pad (GST_ELEMENT (src), src->srcpad);
44 GST_BOILERPLATE (GstTestSrc, gst_test_src, GstElement, GST_TYPE_ELEMENT);
47 main (int argc, char *argv[])
49 GstElement *pipeline, *testsrc, *fakesink;
52 gst_init (&argc, &argv);
54 pipeline = gst_pipeline_new ("p");
55 testsrc = g_object_new (gst_test_src_get_type (), NULL);
56 gst_object_set_name (GST_OBJECT (testsrc), "src");
57 fakesink = gst_element_factory_make ("fakesink", "sink");
58 gst_bin_add_many (GST_BIN (pipeline), testsrc, fakesink, NULL);
59 gst_element_link (testsrc, fakesink);
60 gst_element_set_state (pipeline, GST_STATE_PLAYING);
62 for (n = 0; n < 100; n++) {
63 if (!gst_bin_iterate (GST_BIN (pipeline)))
67 gst_element_set_state (pipeline, GST_STATE_NULL);
68 gst_object_unref (GST_OBJECT (pipeline));