discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=b9f797a277b70f7c38408692d6bf5361dfb26e6d

commit b9f797a277b70f7c38408692d6bf5361dfb26e6d
Author: Mike Blumenkrantz <[email protected]>
Date:   Thu Mar 5 12:18:27 2015 -0500

    flag non-internal wl shm clients as dead and delete mirrors on hide
    
    no more crashing?
---
 src/bin/e_comp_object.c | 12 ++++++++++++
 src/bin/e_comp_wl.c     |  2 +-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index bfada4f..0fdee9a 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -1947,6 +1947,18 @@ _e_comp_smart_hide(Evas_Object *obj)
    if (cw->input_obj) evas_object_hide(cw->input_obj);
    evas_object_hide(cw->effect_obj);
    evas_object_hide(cw->obj);
+   if (cw->ec->dead && cw->obj_mirror)
+     {
+        Evas_Object *o;
+
+        EINA_LIST_FREE(cw->obj_mirror, o)
+          {
+             evas_object_image_data_set(o, NULL);
+             evas_object_freeze_events_set(o, 1);
+             evas_object_event_callback_del_full(o, EVAS_CALLBACK_DEL, 
_e_comp_object_cb_mirror_del, cw);
+             evas_object_del(o);
+          }
+     }
    if (stopping) return;
    /* ensure focus-out */
    if (cw->ec->focused)
diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 6ec02a5..ad3a2ee 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -1356,7 +1356,7 @@ _e_comp_wl_surface_destroy(struct wl_resource *resource)
      return;
 
    if ((!ec->internal) && (!e_comp_gl_get()))
-     ec->hidden = 1;
+     ec->dead = ec->hidden = 1;
    evas_object_hide(ec->frame);
    e_object_del(E_OBJECT(ec));
 }

-- 


Reply via email to