device: Enforce that elements created by gst_device_create_element() 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:08:39 +03:00 committed by Tim-Philipp Müller
parent 937a6ca6d3
commit cc6342d853

View file

@ -205,13 +205,20 @@ GstElement *
gst_device_create_element (GstDevice * device, const gchar * name)
{
GstDeviceClass *klass = GST_DEVICE_GET_CLASS (device);
GstElement *element = NULL;
g_return_val_if_fail (GST_IS_DEVICE (device), NULL);
if (klass->create_element)
return klass->create_element (device, name);
else
return NULL;
element = klass->create_element (device, name);
/* 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);
return element;
}
/**