mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 01:30:38 +00:00
gstobject: add gst_object_ref_sink
Add the gst_object_ref_sink() method to match the glib one. API: GstObject::gst_object_ref_sink()
This commit is contained in:
parent
20d2734a25
commit
54401df78c
4 changed files with 36 additions and 0 deletions
|
@ -1214,6 +1214,7 @@ gst_object_save_thyself
|
||||||
gst_object_restore_thyself
|
gst_object_restore_thyself
|
||||||
gst_object_ref
|
gst_object_ref
|
||||||
gst_object_unref
|
gst_object_unref
|
||||||
|
gst_object_ref_sink
|
||||||
gst_object_sink
|
gst_object_sink
|
||||||
gst_object_replace
|
gst_object_replace
|
||||||
gst_object_get_path_string
|
gst_object_get_path_string
|
||||||
|
|
|
@ -326,6 +326,39 @@ gst_object_unref (gpointer object)
|
||||||
g_object_unref (object);
|
g_object_unref (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_object_ref_sink:
|
||||||
|
* @object: a #GstObject to sink
|
||||||
|
*
|
||||||
|
* Increase the reference count of @object, and possibly remove the floating
|
||||||
|
* reference, if @object has a floating reference.
|
||||||
|
*
|
||||||
|
* In other words, if the object is floating, then this call "assumes ownership"
|
||||||
|
* of the floating reference, converting it to a normal reference by clearing
|
||||||
|
* the floating flag while leaving the reference count unchanged. If the object
|
||||||
|
* is not floating, then this call adds a new normal reference increasing the
|
||||||
|
* reference count by one.
|
||||||
|
*
|
||||||
|
* MT safe. This function grabs and releases @object lock.
|
||||||
|
*
|
||||||
|
* Since: 0.10.24
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gst_object_ref_sink (gpointer object)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GST_IS_OBJECT (object));
|
||||||
|
|
||||||
|
GST_OBJECT_LOCK (object);
|
||||||
|
if (G_LIKELY (GST_OBJECT_IS_FLOATING (object))) {
|
||||||
|
GST_CAT_LOG_OBJECT (GST_CAT_REFCOUNTING, object, "unsetting floating flag");
|
||||||
|
GST_OBJECT_FLAG_UNSET (object, GST_OBJECT_FLOATING);
|
||||||
|
GST_OBJECT_UNLOCK (object);
|
||||||
|
} else {
|
||||||
|
GST_OBJECT_UNLOCK (object);
|
||||||
|
gst_object_ref (object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_object_sink:
|
* gst_object_sink:
|
||||||
* @object: a #GstObject to sink
|
* @object: a #GstObject to sink
|
||||||
|
|
|
@ -290,6 +290,7 @@ void gst_object_default_deep_notify (GObject *object, GstObject *ori
|
||||||
/* refcounting + life cycle */
|
/* refcounting + life cycle */
|
||||||
gpointer gst_object_ref (gpointer object);
|
gpointer gst_object_ref (gpointer object);
|
||||||
void gst_object_unref (gpointer object);
|
void gst_object_unref (gpointer object);
|
||||||
|
void gst_object_ref_sink (gpointer object);
|
||||||
void gst_object_sink (gpointer object);
|
void gst_object_sink (gpointer object);
|
||||||
|
|
||||||
/* replace object pointer */
|
/* replace object pointer */
|
||||||
|
|
|
@ -511,6 +511,7 @@ EXPORTS
|
||||||
gst_object_get_type
|
gst_object_get_type
|
||||||
gst_object_has_ancestor
|
gst_object_has_ancestor
|
||||||
gst_object_ref
|
gst_object_ref
|
||||||
|
gst_object_ref_sink
|
||||||
gst_object_replace
|
gst_object_replace
|
||||||
gst_object_restore_thyself
|
gst_object_restore_thyself
|
||||||
gst_object_save_thyself
|
gst_object_save_thyself
|
||||||
|
|
Loading…
Reference in a new issue