From: Sebastian Dröge Date: Thu, 12 Sep 2019 07:09:18 +0000 (+0300) Subject: element: Enforce that elements created by gst_element_factory_create/make() are floating X-Git-Tag: 1.16.2~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ce43de86902c4e9c8ed4e9682602664cb9bce2ee;p=platform%2Fupstream%2Fgstreamer.git 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 --- diff --git a/gst/gstelementfactory.c b/gst/gstelementfactory.c index cf3b100..3ccfc14 100644 --- a/gst/gstelementfactory.c +++ b/gst/gstelementfactory.c @@ -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;