flag non-internal wl shm clients as dead and delete mirrors on hide

no more crashing?
This commit is contained in:
Mike Blumenkrantz 2015-03-05 12:18:27 -05:00
parent 6696c99a26
commit b9f797a277
2 changed files with 13 additions and 1 deletions

View File

@ -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)

View File

@ -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));
}