From: Edward Hervey Date: Mon, 11 Oct 2010 16:55:14 +0000 (+0200) Subject: miniobject: Directly increate mini_object in mini_object_free() X-Git-Tag: RELEASE-0.10.31~43 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2c4afb966d2b6c734eae96cbcf94bda04e796c05;p=platform%2Fupstream%2Fgstreamer.git 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. --- diff --git a/gst/gstminiobject.c b/gst/gstminiobject.c index 0d7e287..2d12865 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);