From: Juyeon Lee Date: Fri, 6 Dec 2019 04:56:50 +0000 (+0900) Subject: e_policy_visibility: add skip_hook_del X-Git-Tag: submit/tizen/20200103.060921~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F71%2F219571%2F3;p=platform%2Fupstream%2Fenlightenment.git e_policy_visibility: add skip_hook_del E_Vis_Client allocation and free is not paired due missing E_EVENT_CLIENT_REMOVE event by adding skip_hook_del flag, free e_vis_client when E_CLIENT_HOOK_DEL is called without E_EVENT_CLIENT_ADD event. Change-Id: I2d0d67468cecedf2c265887bd525db8abb478b44 --- diff --git a/src/bin/e_policy_visibility.c b/src/bin/e_policy_visibility.c index fddcf81dbc..9ca4680b68 100644 --- a/src/bin/e_policy_visibility.c +++ b/src/bin/e_policy_visibility.c @@ -1851,10 +1851,24 @@ _e_vis_client_remove(E_Client *ec) static void _e_vis_hook_client_del(void *data EINA_UNUSED, E_Client *ec) { - if (!ec->new_client) return; + E_VIS_CLIENT_GET_OR_RETURN(vc, ec); + if (vc->skip_hook_del) return; _e_vis_client_remove(ec); } +static Eina_Bool +_e_vis_cb_client_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) +{ + E_Event_Client *ev; + + ev = event; + E_VIS_CLIENT_GET_OR_RETURN_VAL(vc, ev->ec, ECORE_CALLBACK_PASS_ON); + + vc->skip_hook_del = EINA_TRUE; + + return ECORE_CALLBACK_PASS_ON; +} + static Eina_Bool _e_vis_cb_client_remove(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) { @@ -2055,6 +2069,7 @@ _e_vis_event_init(void) E_LIST_HOOK_APPEND(pol_vis->hooks, E_CLIENT_HOOK_NEW_CLIENT_POST, _e_vis_hook_new_client_post, NULL); E_LIST_HOOK_APPEND(pol_vis->hooks, E_CLIENT_HOOK_DEL, _e_vis_hook_client_del, NULL); + E_LIST_HANDLER_APPEND(pol_vis->handlers, E_EVENT_CLIENT_ADD, _e_vis_cb_client_add, NULL); E_LIST_HANDLER_APPEND(pol_vis->handlers, E_EVENT_CLIENT_REMOVE, _e_vis_cb_client_remove, NULL); E_COMP_OBJECT_INTERCEPT_HOOK_APPEND(pol_vis->interceptors, E_COMP_OBJECT_INTERCEPT_HOOK_SHOW_HELPER, _e_vis_intercept_show, NULL); diff --git a/src/bin/e_policy_visibility_internal.h b/src/bin/e_policy_visibility_internal.h index 9d3b75133e..ae3ad346b6 100644 --- a/src/bin/e_policy_visibility_internal.h +++ b/src/bin/e_policy_visibility_internal.h @@ -148,6 +148,7 @@ struct _E_Vis_Client E_Layer layer; Eina_Bool skip_below_uniconify; + Eina_Bool skip_hook_del; }; struct _E_Vis_Job_Group