diff options
author | Edward Hervey <bilboed@bilboed.com> | 2010-10-11 18:55:14 +0200 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2010-10-11 18:55:14 +0200 |
commit | 2c4afb966d2b6c734eae96cbcf94bda04e796c05 (patch) | |
tree | b15220a2eb86a28cf95969ca81e95a7afbc47c15 | |
parent | 89d3da6cba56a181d3ba19dd6d4cd114cf6386c5 (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.c | 6 |
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); |