ooh - and remove leak from callbacks not being freed! fixed!

SVN revision: 28426
This commit is contained in:
Carsten Haitzler 2007-02-21 21:43:45 +00:00
parent 6a74d5c034
commit 9ae24eeaeb
3 changed files with 17 additions and 0 deletions

View File

@ -91,6 +91,21 @@ evas_object_event_callback_clear(Evas_Object *obj)
}
}
void
evas_object_event_callback_all_del(Evas_Object *obj)
{
Evas_Object_List *l;
if (!obj->callbacks) return;
for (l = obj->callbacks->callbacks; l; l = l->next)
{
Evas_Func_Node *fn;
fn = (Evas_Func_Node *)l;
fn->delete_me = 1;
}
}
void
evas_object_event_callback_cleanup(Evas_Object *obj)
{

View File

@ -56,6 +56,7 @@ evas_object_free(Evas_Object *obj, int clean_layer)
obj->clip.changes = evas_list_remove(obj->clip.changes, r);
free(r);
}
evas_object_event_callback_all_del(obj);
evas_object_event_callback_cleanup(obj);
while (obj->data.elements)
{

View File

@ -702,6 +702,7 @@ void evas_object_smart_unuse(Evas_Smart *s);
void evas_object_smart_del(Evas_Object *obj);
void evas_object_smart_cleanup(Evas_Object *obj);
void *evas_mem_calloc(int size);
void evas_object_event_callback_all_del(Evas_Object *obj);
void evas_object_event_callback_cleanup(Evas_Object *obj);
void evas_object_inform_call_show(Evas_Object *obj);
void evas_object_inform_call_hide(Evas_Object *obj);