element: Enforce that elements created by gst_element_factory_create/make() are floating

Bindings might have a hard time making sure that the reference is indeed
still floating after returning here.

See https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/444
This commit is contained in:
Sebastian Dröge 2019-09-12 10:09:18 +03:00 committed by Sebastian Dröge
parent 341ee45155
commit 9cf764b2ec

View file

@ -386,6 +386,12 @@ gst_element_factory_create (GstElementFactory * factory, const gchar * name)
/* This ref will never be dropped as the class is never destroyed */
GST_OBJECT_FLAG_SET (factory, GST_OBJECT_FLAG_MAY_BE_LEAKED);
/* Ensure that the reference is floating. Bindings might have a hard time
* making sure that the reference is indeed still floating after returning
* here */
if (element)
g_object_force_floating ((GObject *) element);
GST_DEBUG ("created element \"%s\"", GST_OBJECT_NAME (factory));
return element;