From dfb5f383510f32e8bba862d13f5bfd34bf1f8521 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 19 Jul 2004 15:48:14 +0000 Subject: [PATCH] Added testcase for 147819 Original commit message from CVS: Added testcase for 147819 --- ChangeLog | 7 ++ tests/old/testsuite/schedulers/147819.c | 100 +++++++++++++++++++++ tests/old/testsuite/schedulers/Makefile.am | 2 +- testsuite/schedulers/147819.c | 100 +++++++++++++++++++++ testsuite/schedulers/Makefile.am | 2 +- 5 files changed, 209 insertions(+), 2 deletions(-) create mode 100644 tests/old/testsuite/schedulers/147819.c create mode 100644 testsuite/schedulers/147819.c diff --git a/ChangeLog b/ChangeLog index e615b2c87a..76a232007f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-07-19 Wim Taymans + + * testsuite/schedulers/147819.c: (handoff_identity1), + (handoff_identity2), (main): + * testsuite/schedulers/Makefile.am: + Added testcase for bug 147819 + 2004-07-19 Wim Taymans * testsuite/schedulers/147894.c: (queue_empty), (queue_filled), diff --git a/tests/old/testsuite/schedulers/147819.c b/tests/old/testsuite/schedulers/147819.c new file mode 100644 index 0000000000..d8b30b337b --- /dev/null +++ b/tests/old/testsuite/schedulers/147819.c @@ -0,0 +1,100 @@ +/* GStreamer + * Copyright (C) 2004 Wim Taymans + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include + +static gboolean handoff; + +static void +handoff_identity1 (GstElement * element) +{ + g_print ("identity1 handoff\n"); + handoff = TRUE; +} + +static void +handoff_identity2 (GstElement * element) +{ + g_print ("identity2 handoff\n"); + handoff = TRUE; +} + +gint +main (gint argc, gchar ** argv) +{ + GstElement *pipeline, *src, *sink, *id1, *id2; + + gst_init (&argc, &argv); + + g_print ("setting up...\n"); + /* setup pipeline */ + pipeline = gst_element_factory_make ("pipeline", NULL); + g_assert (pipeline); + src = gst_element_factory_make ("fakesrc", NULL); + g_assert (src); + id1 = gst_element_factory_make ("identity", NULL); + g_assert (id1); + g_object_set (G_OBJECT (id1), "loop-based", TRUE, NULL); + g_object_set (G_OBJECT (id1), "duplicate", 3, NULL); + g_signal_connect (G_OBJECT (id1), "handoff", (GCallback) handoff_identity1, + NULL); + + id2 = gst_element_factory_make ("identity", NULL); + g_assert (id2); + g_object_set (G_OBJECT (id2), "loop-based", TRUE, NULL); + g_signal_connect (G_OBJECT (id2), "handoff", (GCallback) handoff_identity2, + NULL); + + sink = gst_element_factory_make ("fakesink", NULL); + g_assert (sink); + + gst_bin_add_many (GST_BIN (pipeline), src, id1, id2, sink, NULL); + + gst_element_link_pads (src, "src", id1, "sink"); + gst_element_link_pads (id1, "src", id2, "sink"); + gst_element_link_pads (id2, "src", sink, "sink"); + + if (gst_element_set_state (pipeline, GST_STATE_PLAYING) != GST_STATE_SUCCESS) + g_assert_not_reached (); + + g_print ("running...\n"); + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + + /* do ugly stuff here */ + gst_object_ref (GST_OBJECT (id1)); + gst_bin_remove (GST_BIN (pipeline), id1); + gst_element_link_pads (src, "src", id1, "sink"); + gst_element_link_pads (id1, "src", id2, "sink"); + + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + + g_print ("cleaning up...\n"); + gst_object_unref (GST_OBJECT (pipeline)); + src = id1 = id2 = sink = pipeline = NULL; + + g_print ("done.\n"); + return 0; +} diff --git a/tests/old/testsuite/schedulers/Makefile.am b/tests/old/testsuite/schedulers/Makefile.am index a7c1954442..0bb006ddf0 100644 --- a/tests/old/testsuite/schedulers/Makefile.am +++ b/tests/old/testsuite/schedulers/Makefile.am @@ -9,7 +9,7 @@ tests_pass = \ # don't enable this one unless it actually works. # useless_iteration -tests_fail = 142183 142183-2 147894 +tests_fail = 142183 142183-2 147894 147819 tests_ignore = unlink_src_SOURCES = unlink.c diff --git a/testsuite/schedulers/147819.c b/testsuite/schedulers/147819.c new file mode 100644 index 0000000000..d8b30b337b --- /dev/null +++ b/testsuite/schedulers/147819.c @@ -0,0 +1,100 @@ +/* GStreamer + * Copyright (C) 2004 Wim Taymans + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include + +static gboolean handoff; + +static void +handoff_identity1 (GstElement * element) +{ + g_print ("identity1 handoff\n"); + handoff = TRUE; +} + +static void +handoff_identity2 (GstElement * element) +{ + g_print ("identity2 handoff\n"); + handoff = TRUE; +} + +gint +main (gint argc, gchar ** argv) +{ + GstElement *pipeline, *src, *sink, *id1, *id2; + + gst_init (&argc, &argv); + + g_print ("setting up...\n"); + /* setup pipeline */ + pipeline = gst_element_factory_make ("pipeline", NULL); + g_assert (pipeline); + src = gst_element_factory_make ("fakesrc", NULL); + g_assert (src); + id1 = gst_element_factory_make ("identity", NULL); + g_assert (id1); + g_object_set (G_OBJECT (id1), "loop-based", TRUE, NULL); + g_object_set (G_OBJECT (id1), "duplicate", 3, NULL); + g_signal_connect (G_OBJECT (id1), "handoff", (GCallback) handoff_identity1, + NULL); + + id2 = gst_element_factory_make ("identity", NULL); + g_assert (id2); + g_object_set (G_OBJECT (id2), "loop-based", TRUE, NULL); + g_signal_connect (G_OBJECT (id2), "handoff", (GCallback) handoff_identity2, + NULL); + + sink = gst_element_factory_make ("fakesink", NULL); + g_assert (sink); + + gst_bin_add_many (GST_BIN (pipeline), src, id1, id2, sink, NULL); + + gst_element_link_pads (src, "src", id1, "sink"); + gst_element_link_pads (id1, "src", id2, "sink"); + gst_element_link_pads (id2, "src", sink, "sink"); + + if (gst_element_set_state (pipeline, GST_STATE_PLAYING) != GST_STATE_SUCCESS) + g_assert_not_reached (); + + g_print ("running...\n"); + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + + /* do ugly stuff here */ + gst_object_ref (GST_OBJECT (id1)); + gst_bin_remove (GST_BIN (pipeline), id1); + gst_element_link_pads (src, "src", id1, "sink"); + gst_element_link_pads (id1, "src", id2, "sink"); + + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + gst_bin_iterate (GST_BIN (pipeline)); + + g_print ("cleaning up...\n"); + gst_object_unref (GST_OBJECT (pipeline)); + src = id1 = id2 = sink = pipeline = NULL; + + g_print ("done.\n"); + return 0; +} diff --git a/testsuite/schedulers/Makefile.am b/testsuite/schedulers/Makefile.am index a7c1954442..0bb006ddf0 100644 --- a/testsuite/schedulers/Makefile.am +++ b/testsuite/schedulers/Makefile.am @@ -9,7 +9,7 @@ tests_pass = \ # don't enable this one unless it actually works. # useless_iteration -tests_fail = 142183 142183-2 147894 +tests_fail = 142183 142183-2 147894 147819 tests_ignore = unlink_src_SOURCES = unlink.c