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

-- 


Reply via email to