From c0f6594c96ada64e5f28c347c479288e4942f935 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Mon, 2 Jan 2017 23:26:14 +0900 Subject: [PATCH] ibar - fix seg with ibar icon task menus are up while desktop files change segv if u go do make installs that install desktop files causing efreet to recheck desktop files causing e to reset desktop files causing ibar to refill icons but this causea a segv if a hover menu of windows for that icon are up at the same time. this fixes that. @fix --- src/modules/ibar/e_mod_main.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c index 1b949de47..55797449c 100644 --- a/src/modules/ibar/e_mod_main.c +++ b/src/modules/ibar/e_mod_main.c @@ -140,6 +140,8 @@ static void _ibar_exec_new_client_show(void *data, Evas *e EINA_UNUSED, static Eina_Bool _ibar_cb_out_hide_delay(void *data); static void _ibar_icon_menu_show(IBar_Icon *ic, Eina_Bool grab); static void _ibar_icon_menu_hide(IBar_Icon *ic, Eina_Bool grab); +static void _ibar_cb_icon_menu_img_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED); +static void _ibar_cb_icon_frame_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED); static E_Config_DD *conf_edd = NULL; static E_Config_DD *conf_item_edd = NULL; @@ -872,7 +874,14 @@ _ibar_icon_free(IBar_Icon *ic) E_Exec_Instance *inst; Evas_Object *o; - EINA_LIST_FREE(ic->client_objs, o) evas_object_del(o); + EINA_LIST_FREE(ic->client_objs, o) + { + evas_object_event_callback_del(o, EVAS_CALLBACK_DEL, + _ibar_cb_icon_frame_del); + evas_object_event_callback_del(o, EVAS_CALLBACK_DEL, + _ibar_cb_icon_menu_img_del); + evas_object_del(o); + } if (ic->ibar->menu_icon == ic) ic->ibar->menu_icon = NULL; if (ic->ibar->ic_drop_before == ic) ic->ibar->ic_drop_before = NULL; if (ic->menu) e_object_data_set(E_OBJECT(ic->menu), NULL);