diff --git a/src/modules/notification/e_mod_box.c b/src/modules/notification/e_mod_box.c index c10569ec9..1ba8eb67b 100644 --- a/src/modules/notification/e_mod_box.c +++ b/src/modules/notification/e_mod_box.c @@ -89,7 +89,7 @@ notification_box_visible_set(Notification_Box *b, Eina_Bool visible) Notification_Box_Icon *ic; Ecore_Cb cb = (Ecore_Cb)(visible ? evas_object_show : evas_object_hide); - cb(b->o_box); + if (b->o_box) cb(b->o_box); if (b->o_empty) cb(b->o_empty); EINA_LIST_FOREACH(b->icons, l, ic) { @@ -222,7 +222,7 @@ _notification_box_evas_set(Notification_Box *b, Eina_List *new_icons = NULL; Notification_Box_Icon *ic, *new_ic; - evas_object_del(b->o_box); + if (b->o_box) evas_object_del(b->o_box); if (b->o_empty) evas_object_del(b->o_empty); b->o_empty = NULL; b->o_box = e_box_add(evas); diff --git a/src/modules/notification/e_mod_main.c b/src/modules/notification/e_mod_main.c index 0638b188f..ec69608e9 100644 --- a/src/modules/notification/e_mod_main.c +++ b/src/modules/notification/e_mod_main.c @@ -75,13 +75,20 @@ static void _gc_shutdown(E_Gadcon_Client *gcc) { Instance *inst; - + Notification_Box_Icon *ic; + inst = gcc->data; - evas_object_event_callback_del_full(inst->n_box->o_box, EVAS_CALLBACK_MOVE, - notification_box_cb_obj_moveresize, inst); - evas_object_event_callback_del_full(inst->n_box->o_box, EVAS_CALLBACK_RESIZE, - notification_box_cb_obj_moveresize, inst); - notification_box_visible_set(inst->n_box, EINA_FALSE); + EINA_LIST_FREE(inst->n_box->icons, ic) + { + evas_object_del(ic->o_holder); + evas_object_del(ic->o_holder2); + if (ic->border) e_object_unref(E_OBJECT(ic->border)); + if (ic->notif) e_notification_unref(ic->notif); + free(ic); + } + if (inst->n_box->o_empty) evas_object_del(inst->n_box->o_empty); + if (inst->n_box->o_box) evas_object_del(inst->n_box->o_box); + inst->n_box->o_box = inst->n_box->o_empty = NULL; notification_cfg->instances = eina_list_remove(notification_cfg->instances, inst); free(inst); }