summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <bilboed@bilboed.com>2010-10-11 18:55:14 +0200
committerEdward Hervey <bilboed@bilboed.com>2010-10-11 18:55:14 +0200
commit2c4afb966d2b6c734eae96cbcf94bda04e796c05 (patch)
treeb15220a2eb86a28cf95969ca81e95a7afbc47c15
parent89d3da6cba56a181d3ba19dd6d4cd114cf6386c5 (diff)
miniobject: Directly increate mini_object in mini_object_free()
Speeds up mini_object_unref by 25% by avoiding the typecheck which is avoidable here since it is only called on existing miniobjects.
-rw-r--r--gst/gstminiobject.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gst/gstminiobject.c b/gst/gstminiobject.c
index 0d7e287795..2d128655ed 100644
--- a/gst/gstminiobject.c
+++ b/gst/gstminiobject.c
@@ -324,7 +324,11 @@ gst_mini_object_free (GstMiniObject * mini_object)
/* At this point, the refcount of the object is 0. We increase the refcount
* here because if a subclass recycles the object and gives out a new
* reference we don't want to free the instance anymore. */
- gst_mini_object_ref (mini_object);
+ GST_CAT_TRACE (GST_CAT_REFCOUNTING, "%p ref %d->%d", mini_object,
+ GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object),
+ GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) + 1);
+
+ g_atomic_int_inc (&mini_object->refcount);
mo_class = GST_MINI_OBJECT_GET_CLASS (mini_object);
mo_class->finalize (mini_object);