From: Chris Michael Date: Mon, 2 Mar 2015 20:41:46 +0000 (-0500) Subject: when we get a request to close client app, defer resource deletion X-Git-Tag: submit/tizen/20150311.085739^2~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1cf7c1f1511c446413fdc6fae35d17870bdd1c4e;p=platform%2Fupstream%2Fenlightenment.git when we get a request to close client app, defer resource deletion until After close animation has been run Signed-off-by: Chris Michael --- diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index a52d0a6af0..a386a6f96a 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -148,6 +148,9 @@ _e_comp_wl_evas_cb_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EIN EINA_LIST_FOREACH(ec->e.state.video_child, l, tmp) evas_object_hide(tmp->frame); + + if ((ec->comp_data) && (ec->comp_data->delete_me)) + wl_resource_destroy(ec->comp_data->surface); } static void @@ -1143,8 +1146,21 @@ unmapped: static void _e_comp_wl_surface_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) { + E_Pixmap *ep; + E_Client *ec; + DBG("Surface Cb Destroy: %d", wl_resource_get_id(resource)); - wl_resource_destroy(resource); + + if (!(ep = wl_resource_get_user_data(resource))) return; + if (!(ec = e_pixmap_client_get(ep))) return; + + if (ec->comp_data) + { + ec->comp_data->delete_me = EINA_TRUE; + evas_object_hide(ec->frame); + } + else + wl_resource_destroy(resource); } static void @@ -1343,7 +1359,6 @@ _e_comp_wl_surface_destroy(struct wl_resource *resource) if (!(ec = e_pixmap_client_get(ep))) return; - evas_object_hide(ec->frame); e_object_del(E_OBJECT(ec)); } diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index 85e5004934..c7e2f04199 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -252,6 +252,7 @@ struct _E_Comp_Wl_Client_Data int32_t x, y; } popup; + Eina_Bool delete_me : 1; Eina_Bool keep_buffer : 1; Eina_Bool mapped : 1; Eina_Bool change_icon : 1;