edje: don't forget to del text_class when destroying object.

SVN revision: 60585
This commit is contained in:
Cedric BAIL 2011-06-22 09:47:16 +00:00
parent 6aade06b3f
commit 66098e4c82
4 changed files with 27 additions and 1 deletions

View File

@ -146,6 +146,15 @@ edje_shutdown(void)
}
/* Private Routines */
static Eina_Bool
_text_class_member_free(const Eina_Hash *hash __UNUSED__,
const void *key,
void *data,
void *fdata)
{
_edje_text_class_member_direct_del(key, data);
return EINA_TRUE;
}
void
_edje_del(Edje *ed)
@ -201,7 +210,11 @@ _edje_del(Edje *ed)
free(cb);
}
if (ed->members) eina_hash_free(ed->members);
if (ed->members)
{
eina_hash_foreach(ed->members, _text_class_member_free, NULL);
eina_hash_free(ed->members);
}
free(ed);
}

View File

@ -1545,6 +1545,7 @@ void _edje_color_class_hash_free(void);
Edje_Text_Class *_edje_text_class_find(Edje *ed, const char *text_class);
void _edje_text_class_member_add(Edje *ed, const char *text_class);
void _edje_text_class_member_del(Edje *ed, const char *text_class);
void _edje_text_class_member_direct_del(const char *text_class, Eina_List *lookup);
void _edje_text_class_members_free(void);
void _edje_text_class_hash_free(void);

View File

@ -114,6 +114,7 @@ _edje_smart_add(Evas_Object *obj)
evas_object_geometry_get(obj, &(ed->x), &(ed->y), &(ed->w), &(ed->h));
ed->obj = obj;
_edje_edjes = eina_list_append(_edje_edjes, obj);
fprintf(stderr, "living edje object: %i\n", eina_list_count(_edje_edjes));
/*
{
Eina_List *l;

View File

@ -3695,6 +3695,17 @@ _edje_text_class_find(Edje *ed, const char *text_class)
return eina_hash_find(_edje_text_class_hash, text_class);
}
void
_edje_text_class_member_direct_del(const char *text_class,
Eina_List *lookup)
{
Eina_List *members;
members = eina_hash_find(_edje_text_class_member_hash, text_class);
members = eina_list_remove_list(members, lookup);
eina_hash_set(_edje_text_class_member_hash, text_class, members);
}
void
_edje_text_class_member_add(Edje *ed, const char *text_class)
{