jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=63a18f3fcee6a631c16f582d7c828ab5d96547d0
commit 63a18f3fcee6a631c16f582d7c828ab5d96547d0 Author: Jean-Philippe Andre <[email protected]> Date: Tue Mar 4 14:14:15 2014 +0900 Evas filters: Fix errors in Evas_Object::destructor Remove invalid call to source_unset and call the appropriate Eo evas_obj_text_filter_source_set in case of Evas_Text with proxy sources. --- src/lib/evas/canvas/evas_object_main.c | 7 ++++++- src/lib/evas/canvas/evas_object_text.c | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index d8d3850..ff679cb 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -657,7 +657,12 @@ _destructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED) EINA_LIST_FOREACH_SAFE(obj->clip.clipees, l, l2, tmp) evas_object_clip_unset(tmp->object); EINA_LIST_FOREACH_SAFE(obj->proxy->proxies, l, l2, proxy) - evas_object_image_source_unset(proxy); + { + if (eo_isa(proxy, EVAS_OBJ_IMAGE_CLASS)) + evas_object_image_source_unset(proxy); + else if (eo_isa(proxy, EVAS_OBJ_TEXT_CLASS)) + eo_do(proxy, evas_obj_text_filter_source_set(NULL, eo_obj)); + } if (obj->cur->clipper) evas_object_clip_unset(eo_obj); evas_object_map_set(eo_obj, NULL); if (obj->is_smart) evas_object_smart_del(eo_obj); diff --git a/src/lib/evas/canvas/evas_object_text.c b/src/lib/evas/canvas/evas_object_text.c index 2ffd734..d4a9561 100644 --- a/src/lib/evas/canvas/evas_object_text.c +++ b/src/lib/evas/canvas/evas_object_text.c @@ -2808,6 +2808,14 @@ _filter_source_set(Eo *eo_obj, void *_pd, va_list *list) obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS); if (eo_source) source = eo_data_scope_get(eo_source, EVAS_OBJ_CLASS); + if (!name) + { + if (!eo_source || !o->cur.filter.sources) return; + if (eina_hash_del_by_data(o->cur.filter.sources, eo_source)) + goto update; + return; + } + if (!o->cur.filter.sources) { o->cur.filter.sources = eina_hash_string_small_new --
