forked from enlightenment/enlightenment
object have breadcrumbs - this is a go at debugging info to help track that
dangling reference. its really intended not to remain permenantly - so one day we'll remove it... SVN revision: 15530
This commit is contained in:
parent
fc56f3f6a8
commit
a6abb22f0e
|
@ -491,6 +491,7 @@ e_border_zone_set(E_Border *bd, E_Zone *zone)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Zone_Set));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_zone_set_event");
|
||||
ev->zone = zone;
|
||||
e_object_ref(E_OBJECT(zone));
|
||||
ecore_event_add(E_EVENT_BORDER_ZONE_SET, ev, _e_border_event_border_zone_set_free, NULL);
|
||||
|
@ -516,6 +517,7 @@ e_border_desk_set(E_Border *bd, E_Desk *desk)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Desk_Set));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_desk_set_event");
|
||||
ev->desk = desk;
|
||||
e_object_ref(E_OBJECT(desk));
|
||||
ecore_event_add(E_EVENT_BORDER_DESK_SET, ev, _e_border_event_border_desk_set_free, NULL);
|
||||
|
@ -544,6 +546,7 @@ e_border_show(E_Border *bd)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Show));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_show_event");
|
||||
ecore_event_add(E_EVENT_BORDER_SHOW, ev, _e_border_event_border_show_free, NULL);
|
||||
}
|
||||
|
||||
|
@ -595,6 +598,7 @@ e_border_hide(E_Border *bd, int manage)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Hide));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_hide_event");
|
||||
ecore_event_add(E_EVENT_BORDER_HIDE, ev, _e_border_event_border_hide_free, NULL);
|
||||
}
|
||||
}
|
||||
|
@ -643,6 +647,7 @@ e_border_move(E_Border *bd, int x, int y)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Move));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_move_event");
|
||||
ecore_event_add(E_EVENT_BORDER_MOVE, ev, _e_border_event_border_move_free, NULL);
|
||||
}
|
||||
|
||||
|
@ -688,6 +693,7 @@ e_border_resize(E_Border *bd, int w, int h)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Resize));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event");
|
||||
ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL);
|
||||
}
|
||||
|
||||
|
@ -742,11 +748,13 @@ e_border_move_resize(E_Border *bd, int x, int y, int w, int h)
|
|||
mev = calloc(1, sizeof(E_Event_Border_Move));
|
||||
mev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_move_event");
|
||||
ecore_event_add(E_EVENT_BORDER_MOVE, mev, _e_border_event_border_move_free, NULL);
|
||||
|
||||
rev = calloc(1, sizeof(E_Event_Border_Resize));
|
||||
rev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event");
|
||||
ecore_event_add(E_EVENT_BORDER_RESIZE, rev, _e_border_event_border_resize_free, NULL);
|
||||
}
|
||||
|
||||
|
@ -764,6 +772,7 @@ e_border_raise(E_Border *bd)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Raise));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_raise_event");
|
||||
ev->above = NULL;
|
||||
ecore_event_add(E_EVENT_BORDER_RAISE, ev, _e_border_event_border_raise_free, NULL);
|
||||
}
|
||||
|
@ -783,6 +792,7 @@ e_border_lower(E_Border *bd)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Lower));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_lower_event");
|
||||
ev->below = NULL;
|
||||
ecore_event_add(E_EVENT_BORDER_LOWER, ev, _e_border_event_border_lower_free, NULL);
|
||||
}
|
||||
|
@ -802,8 +812,10 @@ e_border_stack_above(E_Border *bd, E_Border *above)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Raise));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_raise_event");
|
||||
ev->above = above;
|
||||
e_object_ref(E_OBJECT(above));
|
||||
e_object_breadcrumb_add(E_OBJECT(above), "border_raise_event.above");
|
||||
ecore_event_add(E_EVENT_BORDER_RAISE, ev, _e_border_event_border_raise_free, NULL);
|
||||
}
|
||||
}
|
||||
|
@ -821,8 +833,10 @@ e_border_stack_below(E_Border *bd, E_Border *below)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Lower));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_lower_event");
|
||||
ev->below = below;
|
||||
e_object_ref(E_OBJECT(below));
|
||||
e_object_breadcrumb_add(E_OBJECT(below), "border_lower_event.below");
|
||||
ecore_event_add(E_EVENT_BORDER_LOWER, ev, _e_border_event_border_lower_free, NULL);
|
||||
}
|
||||
}
|
||||
|
@ -994,6 +1008,7 @@ e_border_shade(E_Border *bd, E_Direction dir)
|
|||
/* The resize is added in the animator when animation complete */
|
||||
/* For non-animated, we add it immediately with the new size */
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event");
|
||||
ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL);
|
||||
}
|
||||
|
||||
|
@ -1082,6 +1097,7 @@ e_border_unshade(E_Border *bd, E_Direction dir)
|
|||
/* The resize is added in the animator when animation complete */
|
||||
/* For non-animated, we add it immediately with the new size */
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event");
|
||||
ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL);
|
||||
}
|
||||
|
||||
|
@ -1354,6 +1370,7 @@ e_border_iconify(E_Border *bd)
|
|||
ev = E_NEW(E_Event_Border_Iconify, 1);
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_iconify_event");
|
||||
ecore_event_add(E_EVENT_BORDER_ICONIFY, ev, _e_border_event_border_iconify_free, NULL);
|
||||
}
|
||||
|
||||
|
@ -1382,6 +1399,7 @@ e_border_uniconify(E_Border *bd)
|
|||
ev = E_NEW(E_Event_Border_Uniconify, 1);
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_uniconify_event");
|
||||
ecore_event_add(E_EVENT_BORDER_UNICONIFY, ev, _e_border_event_border_uniconify_free, NULL);
|
||||
|
||||
}
|
||||
|
@ -1401,6 +1419,7 @@ e_border_stick(E_Border *bd)
|
|||
ev = E_NEW(E_Event_Border_Stick, 1);
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_stick_event");
|
||||
ecore_event_add(E_EVENT_BORDER_STICK, ev, _e_border_event_border_stick_free, NULL);
|
||||
}
|
||||
|
||||
|
@ -1421,6 +1440,7 @@ e_border_unstick(E_Border *bd)
|
|||
ev = E_NEW(E_Event_Border_Unstick, 1);
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_unstick_event");
|
||||
ecore_event_add(E_EVENT_BORDER_UNSTICK, ev, _e_border_event_border_unstick_free, NULL);
|
||||
}
|
||||
|
||||
|
@ -1947,6 +1967,7 @@ _e_border_del_dangling_ref_check(void *data)
|
|||
printf("%p, %i, \"%s\" [\"%s\" \"%s\"]\n",
|
||||
bd, e_object_ref_get(E_OBJECT(bd)), bd->client.icccm.title,
|
||||
bd->client.icccm.name, bd->client.icccm.class);
|
||||
e_object_breadcrumb_debug(E_OBJECT(bd));
|
||||
printf("---\n");
|
||||
return 1;
|
||||
}
|
||||
|
@ -1973,6 +1994,7 @@ _e_border_del(E_Border *bd)
|
|||
/* FIXME Don't ref this during shutdown. And the event is pointless
|
||||
* during shutdown.. */
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_remove_event");
|
||||
ecore_event_add(E_EVENT_BORDER_REMOVE, ev, _e_border_event_border_remove_free, NULL);
|
||||
}
|
||||
|
||||
|
@ -3761,6 +3783,7 @@ _e_border_eval(E_Border *bd)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Icon_Change));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_icon_change_event");
|
||||
ecore_event_add(E_EVENT_BORDER_ICON_CHANGE, ev,
|
||||
_e_border_event_border_icon_change_free, NULL);
|
||||
}
|
||||
|
@ -4088,6 +4111,7 @@ _e_border_eval(E_Border *bd)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Add));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_add_event");
|
||||
ecore_event_add(E_EVENT_BORDER_ADD, ev, _e_border_event_border_add_free, NULL);
|
||||
|
||||
/* Recreate state */
|
||||
|
@ -4636,6 +4660,7 @@ _e_border_shade_animator(void *data)
|
|||
ev = calloc(1, sizeof(E_Event_Border_Resize));
|
||||
ev->border = bd;
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event");
|
||||
ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
@ -5001,6 +5026,7 @@ _e_border_event_border_resize_free(void *data, void *ev)
|
|||
E_Event_Border_Resize *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_resize_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
free(e);
|
||||
}
|
||||
|
@ -5011,6 +5037,7 @@ _e_border_event_border_move_free(void *data, void *ev)
|
|||
E_Event_Border_Move *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_move_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
free(e);
|
||||
}
|
||||
|
@ -5021,6 +5048,7 @@ _e_border_event_border_add_free(void *data, void *ev)
|
|||
E_Event_Border_Add *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_add_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
free(e);
|
||||
}
|
||||
|
@ -5031,6 +5059,7 @@ _e_border_event_border_remove_free(void *data, void *ev)
|
|||
E_Event_Border_Remove *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_remove_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
free(e);
|
||||
}
|
||||
|
@ -5041,6 +5070,7 @@ _e_border_event_border_show_free(void *data, void *ev)
|
|||
E_Event_Border_Show *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_show_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
free(e);
|
||||
}
|
||||
|
@ -5051,6 +5081,7 @@ _e_border_event_border_hide_free(void *data, void *ev)
|
|||
E_Event_Border_Hide *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_hide_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
free(e);
|
||||
}
|
||||
|
@ -5061,6 +5092,7 @@ _e_border_event_border_iconify_free(void *data, void *ev)
|
|||
E_Event_Border_Iconify *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_iconify_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
free(e);
|
||||
}
|
||||
|
@ -5071,6 +5103,7 @@ _e_border_event_border_uniconify_free(void *data, void *ev)
|
|||
E_Event_Border_Uniconify *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_uniconify_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
free(e);
|
||||
}
|
||||
|
@ -5081,6 +5114,7 @@ _e_border_event_border_stick_free(void *data, void *ev)
|
|||
E_Event_Border_Stick *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_stick_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
free(e);
|
||||
}
|
||||
|
@ -5091,6 +5125,7 @@ _e_border_event_border_unstick_free(void *data, void *ev)
|
|||
E_Event_Border_Unstick *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_unstick_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
free(e);
|
||||
}
|
||||
|
@ -5101,6 +5136,7 @@ _e_border_event_border_zone_set_free(void *data, void *ev)
|
|||
E_Event_Border_Zone_Set *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_zone_set_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
e_object_unref(E_OBJECT(e->zone));
|
||||
free(e);
|
||||
|
@ -5112,6 +5148,7 @@ _e_border_event_border_desk_set_free(void *data, void *ev)
|
|||
E_Event_Border_Desk_Set *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_desk_set_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
e_object_unref(E_OBJECT(e->desk));
|
||||
free(e);
|
||||
|
@ -5123,8 +5160,13 @@ _e_border_event_border_raise_free(void *data, void *ev)
|
|||
E_Event_Border_Raise *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_raise_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
if (e->above) e_object_unref(E_OBJECT(e->above));
|
||||
if (e->above)
|
||||
{
|
||||
e_object_breadcrumb_del(E_OBJECT(e->above), "border_raise_event.above");
|
||||
e_object_unref(E_OBJECT(e->above));
|
||||
}
|
||||
free(e);
|
||||
}
|
||||
|
||||
|
@ -5134,8 +5176,13 @@ _e_border_event_border_lower_free(void *data, void *ev)
|
|||
E_Event_Border_Lower *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_lower_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
if (e->below) e_object_unref(E_OBJECT(e->below));
|
||||
if (e->below)
|
||||
{
|
||||
e_object_breadcrumb_del(E_OBJECT(e->below), "border_lower_event.below");
|
||||
e_object_unref(E_OBJECT(e->below));
|
||||
}
|
||||
free(e);
|
||||
}
|
||||
|
||||
|
@ -5145,6 +5192,7 @@ _e_border_event_border_icon_change_free(void *data, void *ev)
|
|||
E_Event_Border_Icon_Change *e;
|
||||
|
||||
e = ev;
|
||||
e_object_breadcrumb_del(E_OBJECT(e->border), "border_icon_change_event");
|
||||
e_object_unref(E_OBJECT(e->border));
|
||||
free(e);
|
||||
}
|
||||
|
|
|
@ -556,6 +556,7 @@ _e_int_menus_clients_pre_cb(void *data, E_Menu *m)
|
|||
e_menu_item_label_set(mi, _("No name!!"));
|
||||
/* ref the border as we implicitly unref it in the callback */
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "clients_menu");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_clients_item_cb, bd);
|
||||
if (!bd->iconic) e_menu_item_toggle_set(mi, 1);
|
||||
a = e_app_window_name_class_find(bd->client.icccm.name,
|
||||
|
@ -589,6 +590,7 @@ _e_int_menus_clients_free_hook(void *obj)
|
|||
|
||||
bd = borders->data;
|
||||
borders = evas_list_remove_list(borders, borders);
|
||||
e_object_breadcrumb_del(E_OBJECT(bd), "clients_menu");
|
||||
e_object_unref(E_OBJECT(bd));
|
||||
}
|
||||
}
|
||||
|
@ -797,6 +799,7 @@ _e_int_menus_lost_clients_pre_cb(void *data, E_Menu *m)
|
|||
e_menu_item_label_set(mi, _("No name!!"));
|
||||
/* ref the border as we implicitly unref it in the callback */
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
e_object_breadcrumb_add(E_OBJECT(bd), "lost_clients_menu");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_lost_clients_item_cb, bd);
|
||||
a = e_app_window_name_class_find(bd->client.icccm.name,
|
||||
bd->client.icccm.class);
|
||||
|
@ -820,6 +823,7 @@ _e_int_menus_lost_clients_free_hook(void *obj)
|
|||
|
||||
bd = borders->data;
|
||||
borders = evas_list_remove_list(borders, borders);
|
||||
e_object_breadcrumb_del(E_OBJECT(bd), "lost_clients_menu");
|
||||
e_object_unref(E_OBJECT(bd));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -252,6 +252,39 @@ e_object_del_attach_func_set(E_Object *obj, void (*func) (void *obj))
|
|||
obj->del_att_func = func;
|
||||
}
|
||||
|
||||
void
|
||||
e_object_breadcrumb_add(E_Object *obj, char *crumb)
|
||||
{
|
||||
E_OBJECT_CHECK(obj);
|
||||
obj->crumbs = evas_list_append(obj->crumbs, strdup(crumb));
|
||||
}
|
||||
|
||||
void
|
||||
e_object_breadcrumb_del(E_Object *obj, char *crumb)
|
||||
{
|
||||
Evas_List *l;
|
||||
|
||||
E_OBJECT_CHECK(obj);
|
||||
for (l = obj->crumbs; l; l = l->next)
|
||||
{
|
||||
if (!strcmp(crumb, l->data))
|
||||
{
|
||||
free(l->data);
|
||||
obj->crumbs = evas_list_remove_list(obj->crumbs, l);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
e_object_breadcrumb_debug(E_Object *obj)
|
||||
{
|
||||
Evas_List *l;
|
||||
|
||||
E_OBJECT_CHECK(obj);
|
||||
for (l = obj->crumbs; l; l = l->next)
|
||||
printf("CRUMB: %s\n", l->data);
|
||||
}
|
||||
|
||||
#ifdef OBJECT_PARANOIA_CHECK
|
||||
/* local subsystem functions */
|
||||
static void
|
||||
|
|
|
@ -70,6 +70,7 @@ struct _E_Object
|
|||
void (*del_att_func) (void *obj);
|
||||
void *data;
|
||||
unsigned char deleted : 1;
|
||||
Evas_List *crumbs;
|
||||
};
|
||||
|
||||
EAPI void *e_object_alloc (int size, int type, E_Object_Cleanup_Func cleanup_func);
|
||||
|
@ -87,5 +88,9 @@ EAPI void *e_object_data_get (E_Object *obj);
|
|||
EAPI void e_object_free_attach_func_set(E_Object *obj, void (*func) (void *obj));
|
||||
EAPI void e_object_del_attach_func_set (E_Object *obj, void (*func) (void *obj));
|
||||
|
||||
EAPI void e_object_breadcrumb_add (E_Object *obj, char *crumb);
|
||||
EAPI void e_object_breadcrumb_del (E_Object *obj, char *crumb);
|
||||
EAPI void e_object_breadcrumb_debug (E_Object *obj);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -606,6 +606,8 @@ _pager_window_new(Pager_Desk *pd, E_Border *border)
|
|||
|
||||
pw->border = border;
|
||||
e_object_ref(E_OBJECT(border));
|
||||
e_object_breadcrumb_add(E_OBJECT(border), "pager_module");
|
||||
|
||||
visible = !border->iconic;
|
||||
pw->desk = pd;
|
||||
|
||||
|
@ -636,6 +638,7 @@ _pager_window_free(Pager_Win *pw)
|
|||
{
|
||||
if (pw->window_object) evas_object_del(pw->window_object);
|
||||
if (pw->icon_object) evas_object_del(pw->icon_object);
|
||||
e_object_breadcrumb_del(E_OBJECT(pw->border), "pager_module");
|
||||
e_object_unref(E_OBJECT(pw->border));
|
||||
free(pw);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue