diff --git a/legacy/evas/ChangeLog b/legacy/evas/ChangeLog index b930c08c7e..bc4ec30ab4 100644 --- a/legacy/evas/ChangeLog +++ b/legacy/evas/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/legacy/evas/NEWS b/legacy/evas/NEWS index 15ef3777d0..356b585041 100644 --- a/legacy/evas/NEWS +++ b/legacy/evas/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/legacy/evas/src/lib/Evas.h b/legacy/evas/src/lib/Evas.h index 67d3018c49..3ab7d4b07d 100644 --- a/legacy/evas/src/lib/Evas.h +++ b/legacy/evas/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/legacy/evas/src/lib/canvas/evas_object_main.c b/legacy/evas/src/lib/canvas/evas_object_main.c index 90b61584f0..48e97de0a7 100644 --- a/legacy/evas/src/lib/canvas/evas_object_main.c +++ b/legacy/evas/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) {