static void
_e_service_virtual_touch_cb_client_destroy(struct wl_listener *listener, void *data)
{
- E_Client *ec = data, *ec_data;
+ E_Client *ec, *ec_data;
E_Service_Virtual_Touch_Private_Client *vtp_client;
Eina_List *l, *ll;
- EINA_SAFETY_ON_NULL_RETURN(ec);
-
vtp_client = wl_container_of(listener, vtp_client, client_destroy);
+ ec = vtp_client->ec;
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+
+ wl_list_remove(&vtp_client->client_virtual_touch.link);
+ wl_list_remove(&vtp_client->client_destroy.link);
+
E_FREE(vtp_client);
EINA_LIST_FOREACH_SAFE(virtual_touch->list.ec, l, ll, ec_data)