diff --git a/src/bin/e_object.c b/src/bin/e_object.c index 178b2d78a..4a39e44ef 100644 --- a/src/bin/e_object.c +++ b/src/bin/e_object.c @@ -282,6 +282,24 @@ e_object_del_attach_func_set(E_Object *obj, E_Object_Cleanup_Func func) obj->del_att_func = func; } +EAPI void +e_object_delfn_clear(E_Object *obj) +{ + E_OBJECT_CHECK(obj); + while (obj->del_fn_list) + { + E_Object_Delfn *dfn = (E_Object_Delfn *)obj->del_fn_list; + if (obj->walking_list) + dfn->delete_me = 1; + else + { + obj->del_fn_list = eina_inlist_remove(obj->del_fn_list, + EINA_INLIST_GET(dfn)); + free(dfn); + } + } +} + EAPI E_Object_Delfn * e_object_delfn_add(E_Object *obj, void (*func) (void *data, void *obj), void *data) { diff --git a/src/bin/e_object.h b/src/bin/e_object.h index 8865efaa0..071ac7a84 100644 --- a/src/bin/e_object.h +++ b/src/bin/e_object.h @@ -95,6 +95,7 @@ EAPI void e_object_del_attach_func_set (E_Object *obj, E_Object_Cleanup_Func fu EAPI E_Object_Delfn *e_object_delfn_add (E_Object *obj, void (*func) (void *data, void *obj), void *data); EAPI void e_object_delfn_del (E_Object *obj, E_Object_Delfn *dfn); +EAPI void e_object_delfn_clear(E_Object *obj); /* EAPI void e_object_breadcrumb_add (E_Object *obj, char *crumb);