procstats - delete callbacks when client is deleted

evas object may still be around and call callbacks still registered
when client sis del'd - so remove callback in client delete in
procstats.

@fix.
This commit is contained in:
Carsten Haitzler 2022-11-06 08:32:34 +00:00
parent 38178d8c46
commit 1a58e0e582
1 changed files with 7 additions and 0 deletions

View File

@ -37,6 +37,10 @@ typedef struct
Eina_Bool was_maximized;
} Proc_Stats_Client;
static void _proc_stats_client_move_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
static void _proc_stats_client_resize_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
static void _proc_stats_icon_clicked_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info);
static void _proc_stats_client_add(E_Client *ec);
static void _proc_stats_client_display_update(Proc_Stats_Client *client);
static void _proc_stats_client_remove(Proc_Stats_Client *client);
@ -118,6 +122,9 @@ _proc_stats_client_exists(E_Client *ec)
static void
_proc_stats_client_del(Proc_Stats_Client *client)
{
evas_object_event_callback_del_full(client->obj, EVAS_CALLBACK_MOVE, _proc_stats_client_move_cb, client);
evas_object_event_callback_del_full(client->obj, EVAS_CALLBACK_MOUSE_UP, _proc_stats_icon_clicked_cb, client);
evas_object_event_callback_del_full(client->frame_obj, EVAS_CALLBACK_RESIZE, _proc_stats_client_resize_cb, client);
_proc_stats_client_popup_del(client);
edje_object_signal_emit(client->frame_obj, "e,state,procstats,off", "e");
evas_object_del(client->obj);