Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_int_menus.c e_object.c e_object.h Log Message: 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... =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.286 retrieving revision 1.287 diff -u -3 -r1.286 -r1.287 --- e_border.c 24 Jun 2005 09:26:44 -0000 1.286 +++ e_border.c 25 Jun 2005 06:54:22 -0000 1.287 @@ -491,6 +491,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ /* 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 @@ /* 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ /* 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 @@ 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 @@ 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 @@ 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v retrieving revision 1.69 retrieving revision 1.70 diff -u -3 -r1.69 -r1.70 --- e_int_menus.c 19 Jun 2005 14:56:21 -0000 1.69 +++ e_int_menus.c 25 Jun 2005 06:54:22 -0000 1.70 @@ -556,6 +556,7 @@ 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 @@ 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_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 @@ 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)); } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_object.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- e_object.c 11 May 2005 13:13:43 -0000 1.11 +++ e_object.c 25 Jun 2005 06:54:22 -0000 1.12 @@ -252,6 +252,39 @@ 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 =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_object.h,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- e_object.h 11 May 2005 13:13:43 -0000 1.15 +++ e_object.h 25 Jun 2005 06:54:22 -0000 1.16 @@ -70,6 +70,7 @@ 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_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 ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs