From 7828db4575e3b21c2bd3d96cb75d24be391a9c5f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 10 Mar 2017 15:57:15 -0500 Subject: [PATCH] track and delete xdg-shell client hooks fix T5242 --- src/modules/wl_desktop_shell/e_mod_main.c | 3 ++- src/modules/wl_desktop_shell/e_mod_main.h | 2 ++ src/modules/wl_desktop_shell/xdg5.c | 2 +- src/modules/wl_desktop_shell/xdg6.c | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/modules/wl_desktop_shell/e_mod_main.c b/src/modules/wl_desktop_shell/e_mod_main.c index 3775baacb..c19f3de97 100644 --- a/src/modules/wl_desktop_shell/e_mod_main.c +++ b/src/modules/wl_desktop_shell/e_mod_main.c @@ -4,6 +4,7 @@ EINTERN Eina_Hash *shell_resources; EINTERN Eina_Hash *xdg_shell_resources; +EINTERN Eina_List *hooks; EINTERN void e_shell_surface_destroy(struct wl_resource *resource) @@ -194,6 +195,6 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED) e_input_panel_shutdown(); eina_hash_free(shell_resources); eina_hash_free(xdg_shell_resources); - + E_FREE_LIST(hooks, e_client_hook_del); return 1; } diff --git a/src/modules/wl_desktop_shell/e_mod_main.h b/src/modules/wl_desktop_shell/e_mod_main.h index 5aa64dcda..d6042544b 100644 --- a/src/modules/wl_desktop_shell/e_mod_main.h +++ b/src/modules/wl_desktop_shell/e_mod_main.h @@ -6,6 +6,8 @@ EINTERN void e_input_panel_shutdown(void); EINTERN Eina_Hash *shell_resources; EINTERN Eina_Hash *xdg_shell_resources; +EINTERN Eina_List *hooks; + EINTERN void e_shell_surface_destroy(struct wl_resource *resource); EINTERN void e_shell_surface_cb_destroy(struct wl_resource *resource); diff --git a/src/modules/wl_desktop_shell/xdg5.c b/src/modules/wl_desktop_shell/xdg5.c index 5b0b0c57c..dceb0ec9c 100644 --- a/src/modules/wl_desktop_shell/xdg5.c +++ b/src/modules/wl_desktop_shell/xdg5.c @@ -902,6 +902,6 @@ e_xdg_shell_v5_init(void) ERR("Could not create xdg_shell global"); return EINA_FALSE; } - e_client_hook_add(E_CLIENT_HOOK_DEL, _xdg5_client_hook_del, NULL); + hooks = eina_list_append(hooks, e_client_hook_add(E_CLIENT_HOOK_DEL, _xdg5_client_hook_del, NULL)); return EINA_TRUE; } diff --git a/src/modules/wl_desktop_shell/xdg6.c b/src/modules/wl_desktop_shell/xdg6.c index 27e4cb807..b6d34dea2 100644 --- a/src/modules/wl_desktop_shell/xdg6.c +++ b/src/modules/wl_desktop_shell/xdg6.c @@ -1445,6 +1445,6 @@ e_xdg_shell_v6_init(void) ERR("Could not create xdg_shell global"); return EINA_FALSE; } - e_client_hook_add(E_CLIENT_HOOK_DEL, _xdg6_client_hook_del, NULL); + hooks = eina_list_append(hooks, e_client_hook_add(E_CLIENT_HOOK_DEL, _xdg6_client_hook_del, NULL)); return EINA_TRUE; }