mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 17:50:36 +00:00
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:
parent
1edcf747ee
commit
341ee45155
1 changed files with 10 additions and 3 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue