Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_border.h Log Message: add a check to see whats going on if the ghost borders are around =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.224 retrieving revision 1.225 diff -u -3 -r1.224 -r1.225 --- e_border.c 25 May 2005 10:09:34 -0000 1.224 +++ e_border.c 26 May 2005 11:48:39 -0000 1.225 @@ -337,7 +337,7 @@ } /* just to friggin make java happy - we're DELAYING the reparent until - * evail time... + * eval time... */ /* ecore_x_window_reparent(win, bd->client.shell_win, 0, 0); */ bd->need_reparent = 1; @@ -1377,20 +1377,13 @@ if (bd->client.icccm.delete_request) ecore_x_window_delete_request_send(bd->client.win); else - { - ecore_x_kill(bd->client.win); - ecore_x_sync(); -// ecore_x_window_del(bd->client.win); - e_border_hide(bd, 0); - e_object_del(E_OBJECT(bd)); - } + e_border_act_kill_begin(bd); } void e_border_act_kill_begin(E_Border *bd) { ecore_x_kill(bd->client.win); - ecore_x_sync(); e_border_hide(bd, 0); e_object_del(E_OBJECT(bd)); } @@ -1434,6 +1427,11 @@ if (move == bd) _e_border_move_end(bd); + if (bd->dangling_ref_check) + { + ecore_timer_del(bd->dangling_ref_check); + bd->dangling_ref_check = NULL; + } if (bd->raise_timer) { ecore_timer_del(bd->raise_timer); @@ -1467,6 +1465,7 @@ ecore_x_window_reparent(bd->client.win, bd->zone->container->manager->root, bd->x + bd->client_inset.l, bd->y + bd->client_inset.t); ecore_x_window_save_set_del(bd->client.win); + bd->already_unparented = 1; } if (bd->client.border.name) free(bd->client.border.name); if (bd->client.icccm.title) free(bd->client.icccm.title); @@ -1490,16 +1489,36 @@ free(bd); } +static int +_e_border_del_dangling_ref_check(void *data) +{ + E_Border *bd; + + bd = data; + printf("---\n"); + printf("EEK EEK border still around 1 second after being deleted!\n"); + 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); + printf("---\n"); + return 1; +} + static void _e_border_del(E_Border *bd) { E_Event_Border_Remove *ev; - ecore_x_window_reparent(bd->client.win, - bd->zone->container->manager->root, - bd->x + bd->client_inset.l, - bd->y + bd->client_inset.t); - ecore_x_window_save_set_del(bd->client.win); + if (!bd->dangling_ref_check) + bd->dangling_ref_check = ecore_timer_add(1.0, _e_border_del_dangling_ref_check, bd); + if (!bd->already_unparented) + { + ecore_x_window_reparent(bd->client.win, + bd->zone->container->manager->root, + bd->x + bd->client_inset.l, + bd->y + bd->client_inset.t); + ecore_x_window_save_set_del(bd->client.win); + } bd->already_unparented = 1; ev = calloc(1, sizeof(E_Event_Border_Remove)); @@ -1524,7 +1543,8 @@ return 1; } -static int _e_border_cb_window_destroy(void *data, int ev_type, void *ev) +static int +_e_border_cb_window_destroy(void *data, int ev_type, void *ev) { E_Border *bd; Ecore_X_Event_Window_Destroy *e; @@ -3925,13 +3945,7 @@ if (bd->client.icccm.delete_request) ecore_x_window_delete_request_send(bd->client.win); else - { - ecore_x_kill(bd->client.win); - ecore_x_sync(); -// ecore_x_window_del(bd->client.win); - e_border_hide(bd, 0); - e_object_del(E_OBJECT(bd)); - } + e_border_act_close_begin(bd); } static void =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v retrieving revision 1.59 retrieving revision 1.60 diff -u -3 -r1.59 -r1.60 --- e_border.h 20 May 2005 18:46:32 -0000 1.59 +++ e_border.h 26 May 2005 11:48:39 -0000 1.60 @@ -239,6 +239,8 @@ unsigned int layer; E_Action *cur_mouse_action; Ecore_Timer *raise_timer; + + Ecore_Timer *dangling_ref_check; }; struct _E_Border_Pending_Move_Resize ------------------------------------------------------- SF.Net email is sponsored by: GoToMeeting - the easiest way to collaborate online with coworkers and clients while avoiding the high cost of travel and communications. There is no equipment to buy and you can meet as often as you want. Try it free.http://ads.osdn.com/?ad_id=7402&alloc_id=16135&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs