device: remove a destroyed client to watched client list 78/168078/1
authorJengHyun Kang <jhyuni.kang@samsung.com>
Wed, 24 Jan 2018 05:06:54 +0000 (14:06 +0900)
committerJengHyun Kang <jhyuni.kang@samsung.com>
Wed, 24 Jan 2018 05:06:54 +0000 (14:06 +0900)
Change-Id: I539125bc33c8e6347e8219edaca041f2167e8f61

src/e_devicemgr_device.c

index a05b6c9e1d5486416eb4993bb74d3faeee6fd6d8..8ea666c43cb3fb90ffda4d7d6a1873545136a9ad 100644 (file)
@@ -915,6 +915,7 @@ _e_input_devmgr_inputgen_client_cb_destroy(struct wl_listener *l, void *data)
    e_devicemgr_inputgen_client_data *cdata;
    e_devicemgr_inputgen_device_data *ddata;
    e_devicemgr_inputgen_resource_data *rdata;
+   e_devicemgr_inputgen_client_global_data *gdata;
    Eina_List *list, *l_next, *list2, *l_next2;
 
    EINA_SAFETY_ON_NULL_RETURN(l);
@@ -922,6 +923,18 @@ _e_input_devmgr_inputgen_client_cb_destroy(struct wl_listener *l, void *data)
    wl_list_remove(&l->link);
    E_FREE(l);
 
+   EINA_LIST_FOREACH_SAFE(input_devmgr_data->watched_clients, list, l_next, gdata)
+     {
+        if (gdata->client == client)
+          {
+             input_devmgr_data->watched_clients =
+                eina_list_remove_list(input_devmgr_data->watched_clients, list);
+             E_FREE(gdata);
+
+             break;
+          }
+     }
+
    EINA_LIST_FOREACH_SAFE(input_devmgr_data->inputgen.kbd_list, list, l_next, ddata)
      {
         EINA_LIST_FOREACH_SAFE(ddata->clients, list2, l_next2, cdata)