e_devicemgr_block: free a destroy listener when a block is end 02/219202/1
authorjeon <jhyuni.kang@samsung.com>
Tue, 3 Dec 2019 07:51:00 +0000 (16:51 +0900)
committerjeon <jhyuni.kang@samsung.com>
Tue, 3 Dec 2019 07:51:00 +0000 (16:51 +0900)
Change-Id: I267f19656a02d12b2daac61e4170fbb05df347ca

src/bin/e_devicemgr_block.c

index f50018efc5bf1029b4e2ea3d5956187ec9cf139b..fb52f9ad97a4355a952e842f8954a961198577d7 100644 (file)
@@ -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