From 2c4afb966d2b6c734eae96cbcf94bda04e796c05 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Mon, 11 Oct 2010 18:55:14 +0200 Subject: [PATCH] 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. --- gst/gstminiobject.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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);