mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-23 22:46:24 +00:00
tests/check/gst/gstghostpad.c: add more asserts on refcounts do more cleanup at end of tests fix test leaks showing i...
Original commit message from CVS: 2006-04-29 Thomas Vander Stichele <thomas at apestaart dot org> * tests/check/gst/gstghostpad.c: (GST_START_TEST): add more asserts on refcounts do more cleanup at end of tests fix test leaks showing in FC5
This commit is contained in:
parent
9cc956c370
commit
da97c1dfe9
2 changed files with 74 additions and 11 deletions
25
ChangeLog
25
ChangeLog
|
@ -1,3 +1,10 @@
|
||||||
|
2006-04-29 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
|
* tests/check/gst/gstghostpad.c: (GST_START_TEST):
|
||||||
|
add more asserts on refcounts
|
||||||
|
do more cleanup at end of tests
|
||||||
|
fix test leaks showing in FC5
|
||||||
|
|
||||||
2006-04-29 Stefan Kost <ensonic@users.sf.net>
|
2006-04-29 Stefan Kost <ensonic@users.sf.net>
|
||||||
|
|
||||||
* plugins/elements/gsttypefindelement.c:
|
* plugins/elements/gsttypefindelement.c:
|
||||||
|
@ -8,8 +15,8 @@
|
||||||
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
||||||
|
|
||||||
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_event):
|
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_event):
|
||||||
fix changelog entry about last collectpads change,
|
fix changelog entry about last collectpads change,
|
||||||
add notes about proper fix
|
add notes about proper fix
|
||||||
|
|
||||||
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
||||||
|
|
||||||
|
@ -17,7 +24,7 @@
|
||||||
* gst/gstregistry.c: (gst_registry_scan_path_level),
|
* gst/gstregistry.c: (gst_registry_scan_path_level),
|
||||||
(gst_registry_scan_path):
|
(gst_registry_scan_path):
|
||||||
* gst/gstregistry.h:
|
* gst/gstregistry.h:
|
||||||
only write out registry if it has changed, fixes #338339
|
only write out registry if it has changed, fixes #338339
|
||||||
|
|
||||||
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
||||||
|
|
||||||
|
@ -35,29 +42,29 @@
|
||||||
* plugins/elements/gsttee.c:
|
* plugins/elements/gsttee.c:
|
||||||
* plugins/elements/gsttypefindelement.c:
|
* plugins/elements/gsttypefindelement.c:
|
||||||
(gst_type_find_element_handle_event):
|
(gst_type_find_element_handle_event):
|
||||||
make GstElementDetails const
|
make GstElementDetails const
|
||||||
|
|
||||||
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
||||||
|
|
||||||
* libs/gst/base/gstbasesink.c: (gst_base_sink_event):
|
* libs/gst/base/gstbasesink.c: (gst_base_sink_event):
|
||||||
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_base_init),
|
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_base_init),
|
||||||
(gst_collect_pads_is_collected), (gst_collect_pads_event):
|
(gst_collect_pads_is_collected), (gst_collect_pads_event):
|
||||||
more detailed debug and formatting cleanup,
|
more detailed debug and formatting cleanup,
|
||||||
forward newsegments to src-pad (so that e.g. adder not eats them)
|
forward newsegments to src-pad (so that e.g. adder not eats them)
|
||||||
|
|
||||||
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
||||||
|
|
||||||
* gst/gstutils.c: (gst_element_link_pads):
|
* gst/gstutils.c: (gst_element_link_pads):
|
||||||
cleanup double code
|
cleanup double code
|
||||||
|
|
||||||
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
2006-04-28 Stefan Kost <ensonic@users.sf.net>
|
||||||
|
|
||||||
* libs/gst/controller/gstcontroller.c:
|
* libs/gst/controller/gstcontroller.c:
|
||||||
(gst_controller_sync_values):
|
(gst_controller_sync_values):
|
||||||
some little tuning
|
some little tuning
|
||||||
* tests/check/libs/controller.c: (GST_START_TEST),
|
* tests/check/libs/controller.c: (GST_START_TEST),
|
||||||
(gst_controller_suite):
|
(gst_controller_suite):
|
||||||
a new test for live value handling
|
a new test for live value handling
|
||||||
|
|
||||||
2006-04-28 Wim Taymans <wim@fluendo.com>
|
2006-04-28 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
|
|
|
@ -33,10 +33,17 @@ GST_START_TEST (test_remove1)
|
||||||
b2 = gst_element_factory_make ("bin", NULL);
|
b2 = gst_element_factory_make ("bin", NULL);
|
||||||
src = gst_element_factory_make ("fakesrc", NULL);
|
src = gst_element_factory_make ("fakesrc", NULL);
|
||||||
sink = gst_element_factory_make ("fakesink", NULL);
|
sink = gst_element_factory_make ("fakesink", NULL);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (b1, "pipeline", 1);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (b2, "bin", 1);
|
||||||
|
|
||||||
fail_unless (gst_bin_add (GST_BIN (b2), sink));
|
fail_unless (gst_bin_add (GST_BIN (b2), sink));
|
||||||
fail_unless (gst_bin_add (GST_BIN (b1), src));
|
fail_unless (gst_bin_add (GST_BIN (b1), src));
|
||||||
|
ASSERT_OBJECT_REFCOUNT (b1, "pipeline", 1);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (b2, "bin", 1);
|
||||||
fail_unless (gst_bin_add (GST_BIN (b1), b2));
|
fail_unless (gst_bin_add (GST_BIN (b1), b2));
|
||||||
|
/* adding the bin creates a clock provide message with a ref to pipeline */
|
||||||
|
ASSERT_OBJECT_REFCOUNT (b1, "pipeline", 2);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (b2, "bin", 1);
|
||||||
|
|
||||||
sinkpad = gst_element_get_pad (sink, "sink");
|
sinkpad = gst_element_get_pad (sink, "sink");
|
||||||
gst_element_add_pad (b2, gst_ghost_pad_new ("sink", sinkpad));
|
gst_element_add_pad (b2, gst_ghost_pad_new ("sink", sinkpad));
|
||||||
|
@ -51,8 +58,9 @@ GST_START_TEST (test_remove1)
|
||||||
gst_object_unref (srcpad);
|
gst_object_unref (srcpad);
|
||||||
gst_object_unref (sinkpad);
|
gst_object_unref (sinkpad);
|
||||||
|
|
||||||
/* now remove the bin with the ghostpad, b2 is disposed
|
/* now remove the bin with the ghostpad, b2 is disposed now. */
|
||||||
* now. */
|
ASSERT_OBJECT_REFCOUNT (b1, "pipeline", 2);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (b2, "bin", 1);
|
||||||
gst_bin_remove (GST_BIN (b1), b2);
|
gst_bin_remove (GST_BIN (b1), b2);
|
||||||
|
|
||||||
srcpad = gst_element_get_pad (src, "src");
|
srcpad = gst_element_get_pad (src, "src");
|
||||||
|
@ -60,6 +68,10 @@ GST_START_TEST (test_remove1)
|
||||||
fail_if (gst_pad_is_linked (srcpad));
|
fail_if (gst_pad_is_linked (srcpad));
|
||||||
gst_object_unref (srcpad);
|
gst_object_unref (srcpad);
|
||||||
|
|
||||||
|
/* flush the message, dropping the b1 refcount to 1 */
|
||||||
|
gst_element_set_state (b1, GST_STATE_READY);
|
||||||
|
gst_element_set_state (b1, GST_STATE_NULL);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (b1, "pipeline", 1);
|
||||||
gst_object_unref (b1);
|
gst_object_unref (b1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,21 +89,31 @@ GST_START_TEST (test_remove2)
|
||||||
b2 = gst_element_factory_make ("bin", NULL);
|
b2 = gst_element_factory_make ("bin", NULL);
|
||||||
src = gst_element_factory_make ("fakesrc", NULL);
|
src = gst_element_factory_make ("fakesrc", NULL);
|
||||||
sink = gst_element_factory_make ("fakesink", NULL);
|
sink = gst_element_factory_make ("fakesink", NULL);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (src, "src", 1);
|
||||||
|
|
||||||
fail_unless (gst_bin_add (GST_BIN (b2), sink));
|
fail_unless (gst_bin_add (GST_BIN (b2), sink));
|
||||||
fail_unless (gst_bin_add (GST_BIN (b1), src));
|
fail_unless (gst_bin_add (GST_BIN (b1), src));
|
||||||
fail_unless (gst_bin_add (GST_BIN (b1), b2));
|
fail_unless (gst_bin_add (GST_BIN (b1), b2));
|
||||||
|
ASSERT_OBJECT_REFCOUNT (src, "src", 1);
|
||||||
|
|
||||||
sinkpad = gst_element_get_pad (sink, "sink");
|
sinkpad = gst_element_get_pad (sink, "sink");
|
||||||
gst_element_add_pad (b2, gst_ghost_pad_new ("sink", sinkpad));
|
gst_element_add_pad (b2, gst_ghost_pad_new ("sink", sinkpad));
|
||||||
gst_object_unref (sinkpad);
|
gst_object_unref (sinkpad);
|
||||||
|
|
||||||
srcpad = gst_element_get_pad (src, "src");
|
srcpad = gst_element_get_pad (src, "src");
|
||||||
|
ASSERT_OBJECT_REFCOUNT (srcpad, "srcpad", 2); /* since we got one */
|
||||||
/* get the ghostpad */
|
/* get the ghostpad */
|
||||||
sinkpad = gst_element_get_pad (b2, "sink");
|
sinkpad = gst_element_get_pad (b2, "sink");
|
||||||
|
ASSERT_OBJECT_REFCOUNT (sinkpad, "sinkpad", 2); /* since we got one */
|
||||||
|
|
||||||
|
GST_DEBUG ("linking srcpad and sinkpad");
|
||||||
ret = gst_pad_link (srcpad, sinkpad);
|
ret = gst_pad_link (srcpad, sinkpad);
|
||||||
|
GST_DEBUG ("linked srcpad and sinkpad");
|
||||||
fail_unless (ret == GST_PAD_LINK_OK);
|
fail_unless (ret == GST_PAD_LINK_OK);
|
||||||
|
/* the linking causes a proxypad to be created for srcpad,
|
||||||
|
* to which sinkpad gets linked. This proxypad has a ref to srcpad */
|
||||||
|
ASSERT_OBJECT_REFCOUNT (srcpad, "srcpad", 3);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (sinkpad, "sinkpad", 2);
|
||||||
gst_object_unref (srcpad);
|
gst_object_unref (srcpad);
|
||||||
gst_object_unref (sinkpad);
|
gst_object_unref (sinkpad);
|
||||||
|
|
||||||
|
@ -101,6 +123,27 @@ GST_START_TEST (test_remove2)
|
||||||
srcpad = gst_element_get_pad (src, "src");
|
srcpad = gst_element_get_pad (src, "src");
|
||||||
/* pad is still linked to ghostpad */
|
/* pad is still linked to ghostpad */
|
||||||
fail_if (!gst_pad_is_linked (srcpad));
|
fail_if (!gst_pad_is_linked (srcpad));
|
||||||
|
ASSERT_OBJECT_REFCOUNT (src, "src", 1);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (srcpad, "srcpad", 3);
|
||||||
|
gst_object_unref (srcpad);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (sinkpad, "sinkpad", 1);
|
||||||
|
|
||||||
|
/* cleanup */
|
||||||
|
/* now unlink the pads */
|
||||||
|
gst_pad_unlink (srcpad, sinkpad);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (srcpad, "srcpad", 1); /* proxy has dropped ref */
|
||||||
|
ASSERT_OBJECT_REFCOUNT (sinkpad, "sinkpad", 1);
|
||||||
|
|
||||||
|
ASSERT_OBJECT_REFCOUNT (src, "src", 1);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (b2, "bin", 1);
|
||||||
|
/* remove b2 from b1 */
|
||||||
|
gst_bin_remove (GST_BIN (b1), b2);
|
||||||
|
|
||||||
|
/* flush the message, dropping the b1 refcount to 1 */
|
||||||
|
gst_element_set_state (b1, GST_STATE_READY);
|
||||||
|
gst_element_set_state (b1, GST_STATE_NULL);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (b1, "pipeline", 1);
|
||||||
|
gst_object_unref (b1);
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
@ -177,6 +220,11 @@ GST_START_TEST (test_link)
|
||||||
/* and linking should work now */
|
/* and linking should work now */
|
||||||
ret = gst_pad_link (srcpad, sinkpad);
|
ret = gst_pad_link (srcpad, sinkpad);
|
||||||
fail_unless (ret == GST_PAD_LINK_OK);
|
fail_unless (ret == GST_PAD_LINK_OK);
|
||||||
|
|
||||||
|
/* flush the message, dropping the b1 refcount to 1 */
|
||||||
|
gst_element_set_state (b1, GST_STATE_READY);
|
||||||
|
gst_element_set_state (b1, GST_STATE_NULL);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (b1, "pipeline", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
@ -301,12 +349,15 @@ GST_START_TEST (test_ghost_pads_bin)
|
||||||
GstPad *sinkghost;
|
GstPad *sinkghost;
|
||||||
|
|
||||||
pipeline = GST_BIN (gst_pipeline_new ("pipe"));
|
pipeline = GST_BIN (gst_pipeline_new ("pipe"));
|
||||||
|
ASSERT_OBJECT_REFCOUNT (pipeline, "pipeline", 1);
|
||||||
|
|
||||||
srcbin = GST_BIN (gst_bin_new ("srcbin"));
|
srcbin = GST_BIN (gst_bin_new ("srcbin"));
|
||||||
gst_bin_add (pipeline, GST_ELEMENT (srcbin));
|
gst_bin_add (pipeline, GST_ELEMENT (srcbin));
|
||||||
|
ASSERT_OBJECT_REFCOUNT (pipeline, "pipeline", 2); /* provide-clock msg */
|
||||||
|
|
||||||
sinkbin = GST_BIN (gst_bin_new ("sinkbin"));
|
sinkbin = GST_BIN (gst_bin_new ("sinkbin"));
|
||||||
gst_bin_add (pipeline, GST_ELEMENT (sinkbin));
|
gst_bin_add (pipeline, GST_ELEMENT (sinkbin));
|
||||||
|
ASSERT_OBJECT_REFCOUNT (pipeline, "pipeline", 3); /* provide-clock msg */
|
||||||
|
|
||||||
src = gst_element_factory_make ("fakesrc", "src");
|
src = gst_element_factory_make ("fakesrc", "src");
|
||||||
gst_bin_add (srcbin, src);
|
gst_bin_add (srcbin, src);
|
||||||
|
@ -326,6 +377,11 @@ GST_START_TEST (test_ghost_pads_bin)
|
||||||
(srcghost))) != NULL);
|
(srcghost))) != NULL);
|
||||||
fail_unless (GST_PAD_PEER (gst_ghost_pad_get_target (GST_GHOST_PAD
|
fail_unless (GST_PAD_PEER (gst_ghost_pad_get_target (GST_GHOST_PAD
|
||||||
(sinkghost))) != NULL);
|
(sinkghost))) != NULL);
|
||||||
|
|
||||||
|
/* flush the message, dropping the b1 refcount to 1 */
|
||||||
|
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_READY);
|
||||||
|
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_NULL);
|
||||||
|
ASSERT_OBJECT_REFCOUNT (pipeline, "pipeline", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
Loading…
Reference in a new issue