Tiling2: Del all callbacks when unloading module.

This fixes T971.
This commit is contained in:
Tom Hacohen 2014-02-18 14:08:57 +00:00
parent b4900203d5
commit 8463b7af47
1 changed files with 14 additions and 5 deletions

View File

@ -68,6 +68,7 @@ static struct tiling_mod_main_g
*handler_client_add, *handler_client_remove, *handler_client_iconify, *handler_client_add, *handler_client_remove, *handler_client_iconify,
*handler_client_uniconify, *handler_client_property, *handler_client_uniconify, *handler_client_property,
*handler_desk_set, *handler_compositor_resize; *handler_desk_set, *handler_compositor_resize;
E_Client_Hook *handler_client_resize_begin;
E_Client_Menu_Hook *client_menu_hook; E_Client_Menu_Hook *client_menu_hook;
Tiling_Info *tinfo; Tiling_Info *tinfo;
@ -1268,7 +1269,8 @@ e_modapi_init(E_Module *m)
(Ecore_Event_Handler_Cb)_f, \ (Ecore_Event_Handler_Cb)_f, \
NULL); NULL);
e_client_hook_add(E_CLIENT_HOOK_RESIZE_BEGIN, _resize_begin_hook, NULL); _G.handler_client_resize_begin =
e_client_hook_add(E_CLIENT_HOOK_RESIZE_BEGIN, _resize_begin_hook, NULL);
HANDLER(_G.handler_client_resize, CLIENT_RESIZE, _resize_hook); HANDLER(_G.handler_client_resize, CLIENT_RESIZE, _resize_hook);
HANDLER(_G.handler_client_move, CLIENT_MOVE, _move_hook); HANDLER(_G.handler_client_move, CLIENT_MOVE, _move_hook);
HANDLER(_G.handler_client_add, CLIENT_ADD, _add_hook); HANDLER(_G.handler_client_add, CLIENT_ADD, _add_hook);
@ -1452,11 +1454,15 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
eina_log_domain_unregister(tiling_g.log_domain); eina_log_domain_unregister(tiling_g.log_domain);
tiling_g.log_domain = -1; tiling_g.log_domain = -1;
} }
#define SAFE_FREE(x, freefunc) \
if (x) \
{ \
freefunc(x); \
x = NULL; \
}
#define FREE_HANDLER(x) \ #define FREE_HANDLER(x) \
if (x) { \ SAFE_FREE(x, ecore_event_handler_del);
ecore_event_handler_del(x); \
x = NULL; \
}
FREE_HANDLER(_G.handler_client_resize); FREE_HANDLER(_G.handler_client_resize);
FREE_HANDLER(_G.handler_client_move); FREE_HANDLER(_G.handler_client_move);
FREE_HANDLER(_G.handler_client_add); FREE_HANDLER(_G.handler_client_add);
@ -1467,7 +1473,10 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
FREE_HANDLER(_G.handler_client_property); FREE_HANDLER(_G.handler_client_property);
FREE_HANDLER(_G.handler_desk_set); FREE_HANDLER(_G.handler_desk_set);
SAFE_FREE(_G.handler_client_resize_begin, e_client_hook_del);
#undef FREE_HANDLER #undef FREE_HANDLER
#undef SAFE_FREE
#define ACTION_DEL(act, title, value) \ #define ACTION_DEL(act, title, value) \
if (act) { \ if (act) { \