From bcab625b79e96b80e11b8eede64256f27b2d265b Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 2 Nov 2005 08:13:56 +0000 Subject: [PATCH] fix det leeek SVN revision: 18209 --- legacy/edje/src/lib/edje_cache.c | 15 ++++++++++++++- legacy/edje/src/lib/edje_load.c | 2 +- legacy/edje/src/lib/edje_private.h | 1 + legacy/edje/src/lib/edje_smart.c | 4 ++-- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/legacy/edje/src/lib/edje_cache.c b/legacy/edje/src/lib/edje_cache.c index ddab078d8a..3d1e374eb5 100644 --- a/legacy/edje/src/lib/edje_cache.c +++ b/legacy/edje/src/lib/edje_cache.c @@ -207,6 +207,19 @@ _edje_cache_coll_clean(Edje_File *edf) } } +void +_edje_cache_coll_flush(Edje_File *edf) +{ + while (edf->collection_cache) + { + Edje_Part_Collection *edc; + + edc = evas_list_last(edf->collection_cache)->data; + edf->collection_cache = evas_list_remove_list(edf->collection_cache, evas_list_last(edf->collection_cache)); + _edje_collection_free(edf, edc); + } +} + void _edje_cache_coll_unref(Edje_File *edf, Edje_Part_Collection *edc) { @@ -316,7 +329,7 @@ edje_collection_cache_flush(void) Edje_File *edf; edf = l->data; - _edje_cache_coll_clean(edf); + _edje_cache_coll_flush(edf); } /* FIXME: freach in file hash too! */ _edje_collection_cache_size = ps; diff --git a/legacy/edje/src/lib/edje_load.c b/legacy/edje/src/lib/edje_load.c index abd24fe078..600680dff8 100644 --- a/legacy/edje/src/lib/edje_load.c +++ b/legacy/edje/src/lib/edje_load.c @@ -669,7 +669,7 @@ _edje_file_free(Edje_File *edf) } if (edf->path) free(edf->path); if (edf->compiler) free(edf->compiler); - if (edf->collection_cache) _edje_cache_coll_clean(edf); + if (edf->collection_cache) _edje_cache_coll_flush(edf); _edje_textblock_style_cleanup(edf); free(edf); } diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index b9a71d5353..0b1eb98eb1 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -918,6 +918,7 @@ void _edje_textblock_style_parse_and_fix(Edje_File *edf); void _edje_textblock_style_cleanup(Edje_File *edf); Edje_File *_edje_cache_file_coll_open(char *file, char *coll, int *error_ret, Edje_Part_Collection **edc_ret); void _edje_cache_coll_clean(Edje_File *edf); +void _edje_cache_coll_flush(Edje_File *edf); void _edje_cache_coll_unref(Edje_File *edf, Edje_Part_Collection *edc); void _edje_cache_file_unref(Edje_File *edf); diff --git a/legacy/edje/src/lib/edje_smart.c b/legacy/edje/src/lib/edje_smart.c index 4b512a1d6c..45deb23c39 100644 --- a/legacy/edje/src/lib/edje_smart.c +++ b/legacy/edje/src/lib/edje_smart.c @@ -140,7 +140,7 @@ _edje_smart_show(Evas_Object * obj) ed = evas_object_smart_data_get(obj); if (!ed) return; - if (evas_object_visible_get(obj)) return; + if (evas_object_visible_get(ed->clipper)) return; if ((ed->collection) && (evas_object_clipees_get(ed->clipper))) evas_object_show(ed->clipper); _edje_emit(ed, "show", ""); @@ -153,7 +153,7 @@ _edje_smart_hide(Evas_Object * obj) ed = evas_object_smart_data_get(obj); if (!ed) return; - if (!evas_object_visible_get(obj)) return; + if (!evas_object_visible_get(ed->clipper)) return; if ((ed->collection) && (evas_object_clipees_get(ed->clipper))) evas_object_hide(ed->clipper); _edje_emit(ed, "hide", "");