From 64fd36e92f9ddcb88ec7a1c76cd26a3ce28dbde9 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Thu, 13 Jan 2005 06:29:52 +0000 Subject: [PATCH] - clean up the _edje_color_class_hash and _edje_text_class_hash on edje_shutdown SVN revision: 12943 --- legacy/edje/src/lib/edje_main.c | 2 ++ legacy/edje/src/lib/edje_private.h | 2 ++ legacy/edje/src/lib/edje_util.c | 49 ++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/legacy/edje/src/lib/edje_main.c b/legacy/edje/src/lib/edje_main.c index e16579d1c7..856bfd9c34 100644 --- a/legacy/edje/src/lib/edje_main.c +++ b/legacy/edje/src/lib/edje_main.c @@ -42,7 +42,9 @@ edje_shutdown(void) _edje_message_shutdown(); _edje_edd_free(); _edje_color_class_members_free(); + _edje_color_class_hash_free(); _edje_text_class_members_free(); + _edje_text_class_hash_free(); embryo_shutdown(); return 0; diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index ccaed31b9c..91ace256a4 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -781,11 +781,13 @@ void _edje_color_class_member_add(Edje *ed, char *color_class); void _edje_color_class_member_del(Edje *ed, char *color_class); void _edje_color_class_on_del(Edje *ed, Edje_Part *ep); void _edje_color_class_members_free(void); +void _edje_color_class_hash_free(void); Edje_Text_Class *_edje_text_class_find(Edje *ed, char *text_class); void _edje_text_class_member_add(Edje *ed, char *text_class); void _edje_text_class_member_del(Edje *ed, char *text_class); void _edje_text_class_members_free(void); +void _edje_text_class_hash_free(void); Edje *_edje_fetch(Evas_Object *obj); int _edje_glob_match(char *str, char *glob); diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index 1696f978a8..9eb450c906 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -1374,6 +1374,30 @@ _edje_color_class_members_free(void) _edje_color_class_member_hash = NULL; } +static Evas_Bool color_class_hash_list_free(Evas_Hash *hash, + const char *key, void *data, + void *fdata) +{ + Edje_Color_Class *cc; + + cc = data; + if (cc->name) free(cc->name); + free(cc); + + return 1; +} + +void +_edje_color_class_hash_free(void) +{ + if (!_edje_color_class_hash) return; + + evas_hash_foreach(_edje_color_class_hash, color_class_hash_list_free, + NULL); + evas_hash_free(_edje_color_class_hash); + _edje_color_class_hash = NULL; +} + void _edje_color_class_on_del(Edje *ed, Edje_Part *ep) { @@ -1447,6 +1471,31 @@ _edje_text_class_members_free(void) _edje_text_class_member_hash = NULL; } +static Evas_Bool text_class_hash_list_free(Evas_Hash *hash, + const char *key, void *data, + void *fdata) +{ + Edje_Text_Class *tc; + + tc = data; + if (tc->name) free(tc->name); + if (tc->font) free(tc->font); + free(tc); + + return 1; +} + +void +_edje_text_class_hash_free(void) +{ + if (!_edje_text_class_hash) return; + + evas_hash_foreach(_edje_text_class_hash, text_class_hash_list_free, + NULL); + evas_hash_free(_edje_text_class_hash); + _edje_text_class_hash = NULL; +} + Edje * _edje_fetch(Evas_Object *obj) {