mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
gst/gstobject.c (gst_object_unref, gst_object_ref)
Original commit message from CVS: 2005-06-28 Andy Wingo <wingo@pobox.com> * gst/gstobject.c (gst_object_unref, gst_object_ref) (gst_object_sink): Take gpointer arguments, not GstObject -- avoids casts. Like GLib.
This commit is contained in:
parent
1b02b1d741
commit
5016035bc6
4 changed files with 19 additions and 21 deletions
|
@ -1,5 +1,9 @@
|
||||||
2005-06-28 Andy Wingo <wingo@pobox.com>
|
2005-06-28 Andy Wingo <wingo@pobox.com>
|
||||||
|
|
||||||
|
* gst/gstobject.c (gst_object_unref, gst_object_ref)
|
||||||
|
(gst_object_sink): Take gpointer arguments, not GstObject --
|
||||||
|
avoids casts. Like GLib.
|
||||||
|
|
||||||
* gst/gstghostpad.c (gst_proxy_pad_do_activate): Don't proxy
|
* gst/gstghostpad.c (gst_proxy_pad_do_activate): Don't proxy
|
||||||
activate.
|
activate.
|
||||||
|
|
||||||
|
|
|
@ -316,6 +316,7 @@ Acquire a reference to the mutex of this object.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@object: the object
|
@object: the object
|
||||||
|
<!-- # Unused Parameters # -->
|
||||||
@Returns:
|
@Returns:
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -255,8 +255,8 @@ gst_object_constructor (GType type, guint n_construct_properties,
|
||||||
*
|
*
|
||||||
* Returns: A pointer to the object
|
* Returns: A pointer to the object
|
||||||
*/
|
*/
|
||||||
GstObject *
|
gpointer
|
||||||
gst_object_ref (GstObject * object)
|
gst_object_ref (gpointer object)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (GST_IS_OBJECT (object), NULL);
|
g_return_val_if_fail (GST_IS_OBJECT (object), NULL);
|
||||||
|
|
||||||
|
@ -274,7 +274,7 @@ gst_object_ref (GstObject * object)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef REFCOUNT_HACK
|
#ifdef REFCOUNT_HACK
|
||||||
g_atomic_int_inc (&object->refcount);
|
g_atomic_int_inc (&((GstObject *) object)->refcount);
|
||||||
PATCH_REFCOUNT (object);
|
PATCH_REFCOUNT (object);
|
||||||
#else
|
#else
|
||||||
/* FIXME, not MT safe because glib is not MT safe */
|
/* FIXME, not MT safe because glib is not MT safe */
|
||||||
|
@ -294,22 +294,16 @@ gst_object_ref (GstObject * object)
|
||||||
*
|
*
|
||||||
* The unref method should never be called with the LOCK held since
|
* The unref method should never be called with the LOCK held since
|
||||||
* this might deadlock the dispose function.
|
* this might deadlock the dispose function.
|
||||||
*
|
|
||||||
* Returns: NULL, so that constructs like
|
|
||||||
*
|
|
||||||
* object = gst_object_unref (object);
|
|
||||||
*
|
|
||||||
* automatically clear the input object pointer.
|
|
||||||
*/
|
*/
|
||||||
GstObject *
|
void
|
||||||
gst_object_unref (GstObject * object)
|
gst_object_unref (gpointer object)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (GST_IS_OBJECT (object), NULL);
|
g_return_if_fail (GST_IS_OBJECT (object));
|
||||||
|
|
||||||
#ifdef REFCOUNT_HACK
|
#ifdef REFCOUNT_HACK
|
||||||
g_return_val_if_fail (GST_OBJECT_REFCOUNT_VALUE (object) > 0, NULL);
|
g_return_if_fail (GST_OBJECT_REFCOUNT_VALUE (object) > 0);
|
||||||
#else
|
#else
|
||||||
g_return_val_if_fail (((GObject *) object)->ref_count > 0, NULL);
|
g_return_if_fail (((GObject *) object)->ref_count > 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG_REFCOUNT
|
#ifdef DEBUG_REFCOUNT
|
||||||
|
@ -326,7 +320,8 @@ gst_object_unref (GstObject * object)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef REFCOUNT_HACK
|
#ifdef REFCOUNT_HACK
|
||||||
if (G_UNLIKELY (g_atomic_int_dec_and_test (&object->refcount))) {
|
if (G_UNLIKELY (g_atomic_int_dec_and_test (&((GstObject *) object)->
|
||||||
|
refcount))) {
|
||||||
PATCH_REFCOUNT1 (object);
|
PATCH_REFCOUNT1 (object);
|
||||||
g_object_unref (object);
|
g_object_unref (object);
|
||||||
} else {
|
} else {
|
||||||
|
@ -336,8 +331,6 @@ gst_object_unref (GstObject * object)
|
||||||
/* FIXME, not MT safe because glib is not MT safe */
|
/* FIXME, not MT safe because glib is not MT safe */
|
||||||
g_object_unref (object);
|
g_object_unref (object);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -352,7 +345,7 @@ gst_object_unref (GstObject * object)
|
||||||
* MT safe. This function grabs and releases the object lock.
|
* MT safe. This function grabs and releases the object lock.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
gst_object_sink (GstObject * object)
|
gst_object_sink (gpointer object)
|
||||||
{
|
{
|
||||||
g_return_if_fail (GST_IS_OBJECT (object));
|
g_return_if_fail (GST_IS_OBJECT (object));
|
||||||
|
|
||||||
|
|
|
@ -144,9 +144,9 @@ void gst_object_default_deep_notify (GObject *object, GstObject *ori
|
||||||
GParamSpec *pspec, gchar **excluded_props);
|
GParamSpec *pspec, gchar **excluded_props);
|
||||||
|
|
||||||
/* refcounting + life cycle */
|
/* refcounting + life cycle */
|
||||||
GstObject * gst_object_ref (GstObject *object);
|
gpointer gst_object_ref (gpointer object);
|
||||||
GstObject * gst_object_unref (GstObject *object);
|
void gst_object_unref (gpointer object);
|
||||||
void gst_object_sink (GstObject *object);
|
void gst_object_sink (gpointer object);
|
||||||
|
|
||||||
/* replace object pointer */
|
/* replace object pointer */
|
||||||
void gst_object_replace (GstObject **oldobj, GstObject *newobj);
|
void gst_object_replace (GstObject **oldobj, GstObject *newobj);
|
||||||
|
|
Loading…
Reference in a new issue