mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 09:10:36 +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_ref
|
||||
gst_object_unref
|
||||
gst_object_ref_sink
|
||||
gst_object_sink
|
||||
gst_object_replace
|
||||
gst_object_get_path_string
|
||||
|
|
|
@ -326,6 +326,39 @@ gst_object_unref (gpointer 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:
|
||||
* @object: a #GstObject to sink
|
||||
|
|
|
@ -290,6 +290,7 @@ void gst_object_default_deep_notify (GObject *object, GstObject *ori
|
|||
/* refcounting + life cycle */
|
||||
gpointer gst_object_ref (gpointer object);
|
||||
void gst_object_unref (gpointer object);
|
||||
void gst_object_ref_sink (gpointer object);
|
||||
void gst_object_sink (gpointer object);
|
||||
|
||||
/* replace object pointer */
|
||||
|
|
|
@ -511,6 +511,7 @@ EXPORTS
|
|||
gst_object_get_type
|
||||
gst_object_has_ancestor
|
||||
gst_object_ref
|
||||
gst_object_ref_sink
|
||||
gst_object_replace
|
||||
gst_object_restore_thyself
|
||||
gst_object_save_thyself
|
||||
|
|
Loading…
Reference in a new issue