From b72a6f05dd67348a0f2f85053ac3b85ccb744a20 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Mon, 10 Aug 2015 17:20:46 +0900 Subject: [PATCH] remove subc from subsurface list of parent when subc destoryed Change-Id: Iedc5ab225da7940f35d67b41c0794ea554b90512 --- src/bin/e_comp_wl.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index c4bc8a3..d2fc9d5 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -2986,15 +2986,32 @@ _e_comp_wl_client_cb_del(void *data EINA_UNUSED, E_Client *ec) e_pixmap_parent_window_set(ec->pixmap, 0); } + if (ec->comp_data->sub.data) + { + E_Comp_Wl_Subsurf_Data *sdata = ec->comp_data->sub.data; + if (sdata->parent && sdata->parent->comp_data) + { + /* remove this client from parents sub list */ + sdata->parent->comp_data->sub.list = + eina_list_remove(sdata->parent->comp_data->sub.list, ec); + sdata->parent->comp_data->sub.list_pending = + eina_list_remove(sdata->parent->comp_data->sub.list_pending, ec); + sdata->parent->comp_data->sub.below_list = + eina_list_remove(sdata->parent->comp_data->sub.below_list, ec); + sdata->parent->comp_data->sub.below_list_pending = + eina_list_remove(sdata->parent->comp_data->sub.below_list_pending, ec); + } + } + /* remove sub list */ EINA_LIST_FREE(ec->comp_data->sub.list, subc) - subc->comp_data->sub.data->parent = NULL; + if (subc->comp_data && subc->comp_data->sub.data) subc->comp_data->sub.data->parent = NULL; EINA_LIST_FREE(ec->comp_data->sub.list_pending, subc) - subc->comp_data->sub.data->parent = NULL; + if (subc->comp_data && subc->comp_data->sub.data) subc->comp_data->sub.data->parent = NULL; EINA_LIST_FREE(ec->comp_data->sub.below_list, subc) - subc->comp_data->sub.data->parent = NULL; + if (subc->comp_data && subc->comp_data->sub.data) subc->comp_data->sub.data->parent = NULL; EINA_LIST_FREE(ec->comp_data->sub.below_list_pending, subc) - subc->comp_data->sub.data->parent = NULL; + if (subc->comp_data && subc->comp_data->sub.data) subc->comp_data->sub.data->parent = NULL; if ((ec->parent) && (ec->parent->modal == ec)) { -- 2.7.4