miniobject: Directly increate mini_object in mini_object_free()
authorEdward Hervey <bilboed@bilboed.com>
Mon, 11 Oct 2010 16:55:14 +0000 (18:55 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Mon, 11 Oct 2010 16:55:14 +0000 (18:55 +0200)
Speeds up mini_object_unref by 25% by avoiding the typecheck which
is avoidable here since it is only called on existing miniobjects.

gst/gstminiobject.c

index 0d7e287..2d12865 100644 (file)
@@ -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);