add function to clear all delfns from e_object without calling (for hard mode players...
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 30 Aug 2012 06:24:38 +0000 (06:24 +0000)
committerMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 30 Aug 2012 06:24:38 +0000 (06:24 +0000)
SVN revision: 75837

src/bin/e_object.c
src/bin/e_object.h

index 178b2d7..4a39e44 100644 (file)
@@ -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)
 {
index 8865efa..071ac7a 100644 (file)
@@ -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);