From 119b8b757072ef6173adeb26bf3e373df07758ba Mon Sep 17 00:00:00 2001 From: raster Date: Thu, 29 Mar 2012 07:46:30 +0000 Subject: [PATCH] add reg_get api for evas objects in order to help fix elm bug. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@69722 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- ChangeLog | 5 +++++ NEWS | 1 + src/lib/Evas.h | 19 +++++++++++++++++++ src/lib/canvas/evas_object_main.c | 10 +++++++++- 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index b930c08..bc4ec30 100644 --- a/ChangeLog +++ b/ChangeLog @@ -676,3 +676,8 @@ * Remove Software SDL engine. +2012-02-23 Carsten Haitzler (The Rasterman) + + * Add evas_object_ref_get() to be able to tell if others ref + an object. + diff --git a/NEWS b/NEWS index 15ef377..356b585 100644 --- a/NEWS +++ b/NEWS @@ -21,6 +21,7 @@ Additions: * EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN. * EVAS_GL_OPTIONS_DIRECT. * evas_object_textblock_style_user_pop/push. + * evas_object_ref_get Fixes: diff --git a/src/lib/Evas.h b/src/lib/Evas.h index 67d3018..3ab7d4b 100644 --- a/src/lib/Evas.h +++ b/src/lib/Evas.h @@ -3294,6 +3294,25 @@ EAPI void evas_object_ref (Evas_Object *obj); */ EAPI void evas_object_unref (Evas_Object *obj); +/** + * Get the object reference count. + * + * @param obj The given Evas object to query + * + * This gets the reference count for an object (normally 0 until it is + * referenced). Values of 1 or greater mean that someone is holding a + * reference to this object that needs to be unreffed before it can be + * deleted. + * + * @see evas_object_ref() + * @see evas_object_unref() + * @see evas_object_del() + * + * @ingroup Evas_Object_Group_Basic + * @since 1.2.0 + */ +EAPI int evas_object_ref_get (const Evas_Object *obj); + /** * Marks the given Evas object for deletion (when Evas will free its diff --git a/src/lib/canvas/evas_object_main.c b/src/lib/canvas/evas_object_main.c index 90b6158..48e97de 100644 --- a/src/lib/canvas/evas_object_main.c +++ b/src/lib/canvas/evas_object_main.c @@ -372,7 +372,6 @@ evas_object_ref(Evas_Object *obj) return; MAGIC_CHECK_END(); obj->ref++; - if (obj->ref == 0) obj->ref--; } EAPI void @@ -386,6 +385,15 @@ evas_object_unref(Evas_Object *obj) if ((obj->del_ref) && (obj->ref == 0)) evas_object_del(obj); } +EAPI int +evas_object_ref_get(const Evas_Object *obj) +{ + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); + return 0; + MAGIC_CHECK_END(); + return obj->ref; +} + EAPI void evas_object_del(Evas_Object *obj) { -- 2.7.4