From 1d096e47bc903f403ce9af1cf55ede42d1a99ddb Mon Sep 17 00:00:00 2001 From: jeon Date: Tue, 3 Dec 2019 16:51:00 +0900 Subject: [PATCH] e_devicemgr_block: free a destroy listener when a block is end Change-Id: I267f19656a02d12b2daac61e4170fbb05df347ca --- src/bin/e_devicemgr_block.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/bin/e_devicemgr_block.c b/src/bin/e_devicemgr_block.c index f50018efc5..fb52f9ad97 100644 --- a/src/bin/e_devicemgr_block.c +++ b/src/bin/e_devicemgr_block.c @@ -1,5 +1,7 @@ #include "e_devicemgr_private.h" +static void _e_devicemgr_block_client_cb_destroy(struct wl_listener *l, void *data); + Eina_Bool e_devicemgr_block_check_keyboard(Ecore_Event_Key *ev, Eina_Bool pressed) { @@ -145,6 +147,8 @@ e_devicemgr_block_check_move(Ecore_Event_Mouse_Move *ev) static void _e_devicemgr_block_client_remove(struct wl_client *client) { + struct wl_listener *destroy_listener = NULL; + if (client != e_devicemgr->block.client) return; e_devicemgr->block.devtype = 0x0; @@ -154,6 +158,13 @@ _e_devicemgr_block_client_remove(struct wl_client *client) e_devicemgr->block.duration_timer = NULL; } e_devicemgr->block.client = NULL; + destroy_listener = wl_client_get_destroy_listener(client, _e_devicemgr_block_client_cb_destroy); + if (destroy_listener) + { + wl_list_remove(&destroy_listener->link); + E_FREE(destroy_listener); + } + } static Eina_Bool -- 2.34.1