werd! found the over-ref. borders begin created before the border system

initted which mean events generated were of the wrogn type (0) which meant
they were thrown out which meant the ref nevert got its macthing unref
called.... :)


SVN revision: 12963
This commit is contained in:
Carsten Haitzler 2005-01-14 14:01:08 +00:00
parent aa53155368
commit ba5ce0470c
3 changed files with 33 additions and 24 deletions

View File

@ -282,6 +282,8 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map)
ev = calloc(1, sizeof(E_Event_Border_Add));
ev->border = bd;
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
ecore_event_add(E_EVENT_BORDER_ADD, ev, _e_border_event_border_add_free, NULL);
return bd;
@ -301,6 +303,8 @@ e_border_desk_set(E_Border *bd, E_Desk *desk)
ev = calloc(1, sizeof(E_Event_Border_Desk_Set));
ev->border = bd;
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
ev->desk = desk;
e_object_ref(E_OBJECT(desk));
@ -323,6 +327,8 @@ e_border_show(E_Border *bd)
ev = calloc(1, sizeof(E_Event_Border_Show));
ev->border = bd;
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
ecore_event_add(E_EVENT_BORDER_SHOW, ev, _e_border_event_border_show_free, NULL);
}
@ -349,6 +355,8 @@ e_border_hide(E_Border *bd)
ev = calloc(1, sizeof(E_Event_Border_Hide));
ev->border = bd;
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
ecore_event_add(E_EVENT_BORDER_HIDE, ev, _e_border_event_border_hide_free, NULL);
}
@ -383,6 +391,8 @@ e_border_move(E_Border *bd, int x, int y)
_e_border_zone_update(bd);
ev = calloc(1, sizeof(E_Event_Border_Move));
ev->border = bd;
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
ecore_event_add(E_EVENT_BORDER_MOVE, ev, _e_border_event_border_move_free, NULL);
}
@ -418,6 +428,8 @@ e_border_resize(E_Border *bd, int w, int h)
_e_border_zone_update(bd);
ev = calloc(1, sizeof(E_Event_Border_Resize));
ev->border = bd;
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL);
}
@ -461,11 +473,15 @@ e_border_move_resize(E_Border *bd, int x, int y, int w, int h)
_e_border_zone_update(bd);
mev = calloc(1, sizeof(E_Event_Border_Move));
mev->border = bd;
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
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;
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
ecore_event_add(E_EVENT_BORDER_RESIZE, rev, _e_border_event_border_resize_free, NULL);
}
@ -633,6 +649,8 @@ e_border_shade(E_Border *bd, E_Direction dir)
ev = calloc(1, sizeof(E_Event_Border_Resize));
ev->border = bd;
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL);
}
@ -709,6 +727,8 @@ e_border_unshade(E_Border *bd, E_Direction dir)
ev = calloc(1, sizeof(E_Event_Border_Resize));
ev->border = bd;
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL);
}
@ -901,6 +921,8 @@ _e_border_del(E_Border *bd)
ev = calloc(1, sizeof(E_Event_Border_Remove));
ev->border = bd;
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
ecore_event_add(E_EVENT_BORDER_REMOVE, ev, _e_border_event_border_remove_free, NULL);
}
@ -2834,7 +2856,7 @@ _e_border_event_border_resize_free(void *data, void *ev)
static void
_e_border_event_border_move_free(void *data, void *ev)
{
E_Event_Border_Resize *e;
E_Event_Border_Move *e;
e = ev;
e_object_unref(E_OBJECT(e->border));
@ -2854,7 +2876,7 @@ _e_border_event_border_add_free(void *data, void *ev)
static void
_e_border_event_border_remove_free(void *data, void *ev)
{
E_Event_Border_Resize *e;
E_Event_Border_Remove *e;
e = ev;
e_object_unref(E_OBJECT(e->border));
@ -2874,7 +2896,7 @@ _e_border_event_border_show_free(void *data, void *ev)
static void
_e_border_event_border_hide_free(void *data, void *ev)
{
E_Event_Border_Show *e;
E_Event_Border_Hide *e;
e = ev;
e_object_unref(E_OBJECT(e->border));

View File

@ -438,6 +438,8 @@ _e_int_menus_clients_pre_cb(void *data, E_Menu *m)
e_menu_item_check_set(mi, 1);
e_menu_item_label_set(mi, bd->client.icccm.title);
/* ref the border as we implicitly ref it in the callback */
/* SUSPICION: does the unref for this actually sometimes not get */
/* called? coudl this be the dangling borders issue? */
e_object_ref(E_OBJECT(bd));
e_menu_item_callback_set(mi, _e_int_menus_clients_item_cb, bd);
if (!bd->iconic) e_menu_item_toggle_set(mi, 1);

View File

@ -225,27 +225,6 @@ main(int argc, char **argv)
_e_main_shutdown(-1);
}
_e_main_shutdown_push(_e_main_screens_shutdown);
/* init global atoms */
if (!e_atoms_init())
{
e_error_message_show("Enlightenment cannot set up atoms system.");
_e_main_shutdown(-1);
}
_e_main_shutdown_push(e_atoms_shutdown);
/* init focus system */
if (!e_focus_init())
{
e_error_message_show("Enlightenment cannot set up its focus system.");
_e_main_shutdown(-1);
}
_e_main_shutdown_push(e_focus_shutdown);
/* init border system */
if (!e_border_init())
{
e_error_message_show("Enlightenment cannot set up its border system.");
_e_main_shutdown(-1);
}
_e_main_shutdown_push(e_border_shutdown);
/* init app system */
if (!e_app_init())
{
@ -496,6 +475,7 @@ _e_main_screens_init(void)
Ecore_X_Window *roots;
int num, i;
if (!e_atoms_init()) return 0;
if (!e_manager_init()) return 0;
if (!e_container_init()) return 0;
if (!e_zone_init()) return 0;
@ -509,6 +489,8 @@ _e_main_screens_init(void)
num);
return 0;
}
if (!e_focus_init()) return 0;
if (!e_border_init()) return 0;
for (i = 0; i < num; i++)
{
E_Manager *man;
@ -567,10 +549,13 @@ _e_main_screens_init(void)
static int
_e_main_screens_shutdown(void)
{
e_border_shutdown();
e_focus_shutdown();
e_desk_shutdown();
e_zone_shutdown();
e_container_shutdown();
e_manager_shutdown();
e_atoms_shutdown();
return 1;
}