harness: Take ownership of floating references (pads, elements) passed to the harness

Without this bindings get confused about the meaning of references, and
we really own these references if they are not already owned by
something else.
This commit is contained in:
Sebastian Dröge 2018-11-13 14:32:56 +02:00 committed by Mathieu Duponchelle
parent ed4f8e368a
commit 2faf93c009

View file

@ -550,6 +550,7 @@ gst_harness_setup_src_pad (GstHarness * h,
/* sending pad */ /* sending pad */
h->srcpad = gst_pad_new_from_static_template (src_tmpl, "src"); h->srcpad = gst_pad_new_from_static_template (src_tmpl, "src");
g_assert (h->srcpad); g_assert (h->srcpad);
gst_object_ref_sink (h->srcpad);
g_object_set_data (G_OBJECT (h->srcpad), HARNESS_KEY, h); g_object_set_data (G_OBJECT (h->srcpad), HARNESS_KEY, h);
gst_pad_set_query_function (h->srcpad, gst_harness_src_query); gst_pad_set_query_function (h->srcpad, gst_harness_src_query);
@ -577,6 +578,7 @@ gst_harness_setup_sink_pad (GstHarness * h,
/* receiving pad */ /* receiving pad */
h->sinkpad = gst_pad_new_from_static_template (sink_tmpl, "sink"); h->sinkpad = gst_pad_new_from_static_template (sink_tmpl, "sink");
g_assert (h->sinkpad); g_assert (h->sinkpad);
gst_object_ref_sink (h->sinkpad);
g_object_set_data (G_OBJECT (h->sinkpad), HARNESS_KEY, h); g_object_set_data (G_OBJECT (h->sinkpad), HARNESS_KEY, h);
gst_pad_set_chain_function (h->sinkpad, gst_harness_chain); gst_pad_set_chain_function (h->sinkpad, gst_harness_chain);
@ -687,7 +689,7 @@ gst_harness_new_empty (void)
/** /**
* gst_harness_add_element_full: (skip) * gst_harness_add_element_full: (skip)
* @h: a #GstHarness * @h: a #GstHarness
* @element: a #GstElement to add to the harness (transfer none) * @element (transfer floating): a #GstElement to add to the harness
* @hsrc: (allow-none): a #GstStaticPadTemplate describing the harness srcpad. * @hsrc: (allow-none): a #GstStaticPadTemplate describing the harness srcpad.
* %NULL will not create a harness srcpad. * %NULL will not create a harness srcpad.
* @element_sinkpad_name: (allow-none): a #gchar with the name of the element * @element_sinkpad_name: (allow-none): a #gchar with the name of the element
@ -718,7 +720,7 @@ gst_harness_add_element_full (GstHarness * h, GstElement * element,
g_return_if_fail (h->element == NULL); g_return_if_fail (h->element == NULL);
element_clock = GST_ELEMENT_CLOCK (element); element_clock = GST_ELEMENT_CLOCK (element);
h->element = gst_object_ref (element); h->element = gst_object_ref_sink (element);
check_element_type (element, &has_sinkpad, &has_srcpad); check_element_type (element, &has_sinkpad, &has_srcpad);
/* setup the loose srcpad linked to the element sinkpad */ /* setup the loose srcpad linked to the element sinkpad */
@ -768,7 +770,7 @@ gst_harness_add_element_full (GstHarness * h, GstElement * element,
/** /**
* gst_harness_new_full: (skip) * gst_harness_new_full: (skip)
* @element: a #GstElement to attach the harness to (transfer none) * @element: (transfer floating): a #GstElement to attach the harness to
* @hsrc: (allow-none): a #GstStaticPadTemplate describing the harness srcpad. * @hsrc: (allow-none): a #GstStaticPadTemplate describing the harness srcpad.
* %NULL will not create a harness srcpad. * %NULL will not create a harness srcpad.
* @element_sinkpad_name: (allow-none): a #gchar with the name of the element * @element_sinkpad_name: (allow-none): a #gchar with the name of the element
@ -804,7 +806,7 @@ gst_harness_new_full (GstElement * element,
/** /**
* gst_harness_new_with_element: (skip) * gst_harness_new_with_element: (skip)
* @element: a #GstElement to attach the harness to (transfer none) * @element: (transfer floating): a #GstElement to attach the harness to
* @element_sinkpad_name: (allow-none): a #gchar with the name of the element * @element_sinkpad_name: (allow-none): a #gchar with the name of the element
* sinkpad that is then linked to the harness srcpad. %NULL does not attach a * sinkpad that is then linked to the harness srcpad. %NULL does not attach a
* sinkpad * sinkpad