diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h index 61af39bc1b..46eb183602 100644 --- a/src/lib/eo/Eo.h +++ b/src/lib/eo/Eo.h @@ -560,8 +560,11 @@ typedef struct _Eo_Call_Cache __FILE__, __LINE__)) return DefRet; \ _Eo_##Name##_func _func_ = (_Eo_##Name##_func) ___call.func; \ -#define _EO_API_BEFORE_HOOK -#define _EO_API_AFTER_HOOK +EAPI void _eo_real_ref(_Eo_Object *obj); +EAPI void _eo_real_unref(_Eo_Object *obj); + +#define _EO_API_BEFORE_HOOK _eo_real_ref(___call.obj); +#define _EO_API_AFTER_HOOK _eo_real_unref(___call.obj); #define _EO_API_CALL_HOOK(x) x // to define an EAPI function diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c index 8ff5f4ac27..8c0023faa5 100644 --- a/src/lib/eo/eo.c +++ b/src/lib/eo/eo.c @@ -1421,6 +1421,18 @@ eo_xunref(Eo *obj_id, const Eo *ref_obj_id) _eo_unref(obj); } +EAPI void +_eo_real_ref(_Eo_Object *obj) +{ + if (obj) _eo_ref(obj); +} + +EAPI void +_eo_real_unref(_Eo_Object *obj) +{ + if (obj) _eo_unref(obj); +} + EAPI Eo * eo_ref(const Eo *obj_id) {