Enlightenment CVS committal Author : sebastid Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_border.h e_hints.c e_manager.c Log Message: - netwm ping. - fix netwm state update. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.242 retrieving revision 1.243 diff -u -3 -r1.242 -r1.243 --- e_border.c 5 Jun 2005 15:02:42 -0000 1.242 +++ e_border.c 5 Jun 2005 15:30:46 -0000 1.243 @@ -1443,7 +1443,14 @@ e_border_act_close_begin(E_Border *bd) { if (bd->client.icccm.delete_request) - ecore_x_window_delete_request_send(bd->client.win); + { + ecore_x_window_delete_request_send(bd->client.win); + if (bd->client.netwm.ping) + { + ecore_x_netwm_ping(bd->client.win); + bd->ping = ecore_time_get(); + } + } else e_border_act_kill_begin(bd); } @@ -3280,9 +3287,22 @@ for (i = 0; i < num; i++) { if (proto[i] == ECORE_X_WM_PROTOCOL_DELETE_REQUEST) - bd->client.icccm.delete_request = 1; - if (proto[i] == ECORE_X_WM_PROTOCOL_TAKE_FOCUS) + { + printf("ECORE_X_WM_PROTOCOL_DELETE_REQUEST\n"); + bd->client.icccm.delete_request = 1; + } + else if (proto[i] == ECORE_X_WM_PROTOCOL_TAKE_FOCUS) bd->client.icccm.take_focus = 1; + else if (proto[i] == ECORE_X_NET_WM_PROTOCOL_PING) + { + printf("ECORE_X_NET_WM_PROTOCOL_PING\n"); + bd->client.netwm.ping = 1; + } + else if (proto[i] == ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST) + { + printf("ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST\n"); + bd->client.netwm.sync_request = 1; + } } free(proto); } @@ -4333,10 +4353,7 @@ E_Border *bd; bd = data; - if (bd->client.icccm.delete_request) - ecore_x_window_delete_request_send(bd->client.win); - else - e_border_act_close_begin(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.68 retrieving revision 1.69 diff -u -3 -r1.68 -r1.69 --- e_border.h 4 Jun 2005 16:31:45 -0000 1.68 +++ e_border.h 5 Jun 2005 15:30:46 -0000 1.69 @@ -183,6 +183,8 @@ int bottom_start_x; int bottom_end_x; } strut; + unsigned char ping : 1; + unsigned char sync_request : 1; /* NetWM Window state */ struct { @@ -248,6 +250,8 @@ unsigned char need_reparent : 1; unsigned char button_grabbed : 1; unsigned char grab : 1; + + double ping; unsigned char changed : 1; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v retrieving revision 1.46 retrieving revision 1.47 diff -u -3 -r1.46 -r1.47 --- e_hints.c 4 Jun 2005 16:31:45 -0000 1.46 +++ e_hints.c 5 Jun 2005 15:30:46 -0000 1.47 @@ -501,6 +501,7 @@ if (changed) { bd->client.netwm.update.state = 1; + bd->changed = 1; } break; case ECORE_X_WINDOW_STATE_STICKY: @@ -529,6 +530,7 @@ if (changed) { bd->client.netwm.update.state = 1; + bd->changed = 1; if (bd->client.netwm.state.sticky) e_border_stick(bd); else @@ -561,6 +563,7 @@ if (changed) { bd->client.netwm.update.state = 1; + bd->changed = 1; if ((bd->client.netwm.state.maximized_v) && (bd->client.netwm.state.maximized_h)) e_border_maximize(bd); @@ -595,6 +598,7 @@ if (changed) { bd->client.netwm.update.state = 1; + bd->changed = 1; if ((bd->client.netwm.state.maximized_v) && (bd->client.netwm.state.maximized_h)) e_border_maximize(bd); @@ -629,6 +633,7 @@ if (changed) { bd->client.netwm.update.state = 1; + bd->changed = 1; if (bd->client.netwm.state.shaded) e_border_shade(bd, e_hints_window_shade_direction_get(bd)); else @@ -661,6 +666,7 @@ if (changed) { bd->client.netwm.update.state = 1; + bd->changed = 1; } break; case ECORE_X_WINDOW_STATE_SKIP_PAGER: @@ -690,6 +696,7 @@ { /* FIXME, we have a pager, care about this! */ bd->client.netwm.update.state = 1; + bd->changed = 1; } break; case ECORE_X_WINDOW_STATE_HIDDEN: @@ -721,6 +728,7 @@ if (changed) { bd->client.netwm.update.state = 1; + bd->changed = 1; if (bd->client.netwm.state.fullscreen) e_border_fullscreen(bd); else @@ -763,6 +771,7 @@ if (changed) { bd->client.netwm.update.state = 1; + bd->changed = 1; if (bd->client.netwm.state.stacking) bd->layer = 150; else @@ -806,6 +815,7 @@ if (changed) { bd->client.netwm.update.state = 1; + bd->changed = 1; if (bd->client.netwm.state.stacking) bd->layer = 50; else @@ -906,6 +916,7 @@ { bd->client.netwm.update.state = 1; bd->client.netwm.state.hidden = 0; + bd->changed = 1; } } @@ -921,6 +932,7 @@ { bd->client.netwm.update.state = 1; bd->client.netwm.state.hidden = 1; + bd->changed = 1; } } @@ -936,6 +948,7 @@ { bd->client.netwm.update.state = 1; bd->client.netwm.state.hidden = 0; + bd->changed = 1; } } @@ -946,11 +959,13 @@ { bd->client.netwm.update.state = 1; bd->client.netwm.state.shaded = 1; + bd->changed = 1; } else if ((bd->client.netwm.state.shaded) && (!on)) { bd->client.netwm.update.state = 1; bd->client.netwm.state.shaded = 0; + bd->changed = 1; } } @@ -982,21 +997,25 @@ { bd->client.netwm.update.state = 1; bd->client.netwm.state.maximized_v = 1; + bd->changed = 1; } else if ((bd->client.netwm.state.maximized_v) && (!on)) { bd->client.netwm.update.state = 1; bd->client.netwm.state.maximized_v = 0; + bd->changed = 1; } if ((!bd->client.netwm.state.maximized_h) && (on)) { bd->client.netwm.update.state = 1; bd->client.netwm.state.maximized_h = 1; + bd->changed = 1; } else if ((bd->client.netwm.state.maximized_h) && (!on)) { bd->client.netwm.update.state = 1; bd->client.netwm.state.maximized_h = 0; + bd->changed = 1; } } @@ -1007,11 +1026,13 @@ { bd->client.netwm.update.state = 1; bd->client.netwm.state.fullscreen = 1; + bd->changed = 1; } else if ((bd->client.netwm.state.fullscreen) && (!on)) { bd->client.netwm.update.state = 1; bd->client.netwm.state.fullscreen = 0; + bd->changed = 1; } } @@ -1022,11 +1043,13 @@ { bd->client.netwm.update.state = 1; bd->client.netwm.state.sticky = 1; + bd->changed = 1; } else if ((bd->client.netwm.state.sticky) && (!on)) { bd->client.netwm.update.state = 1; bd->client.netwm.state.sticky = 0; + bd->changed = 1; } } @@ -1036,6 +1059,7 @@ if (bd->client.netwm.state.stacking == stacking) return; bd->client.netwm.update.state = 1; bd->client.netwm.state.stacking = stacking; + bd->changed = 1; } void =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_manager.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -3 -r1.30 -r1.31 --- e_manager.c 3 Jun 2005 19:10:25 -0000 1.30 +++ e_manager.c 5 Jun 2005 15:30:46 -0000 1.31 @@ -10,6 +10,7 @@ static int _e_manager_cb_window_configure(void *data, int ev_type, void *ev); static int _e_manager_cb_key_down(void *data, int ev_type, void *ev); static int _e_manager_cb_frame_extents_request(void *data, int ev_type, void *ev); +static int _e_manager_cb_ping(void *data, int ev_type, void *ev); #if 0 /* use later - maybe */ static int _e_manager_cb_window_destroy(void *data, int ev_type, void *ev); static int _e_manager_cb_window_hide(void *data, int ev_type, void *ev); @@ -95,6 +96,7 @@ h = ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, _e_manager_cb_key_down, man); if (h) man->handlers = evas_list_append(man->handlers, h); h = ecore_event_handler_add(ECORE_X_EVENT_FRAME_EXTENTS_REQUEST, _e_manager_cb_frame_extents_request, man); + h = ecore_event_handler_add(ECORE_X_EVENT_PING, _e_manager_cb_ping, man); if (h) man->handlers = evas_list_append(man->handlers, h); return man; @@ -509,6 +511,25 @@ return 1; } +static int +_e_manager_cb_ping(void *data, int ev_type __UNUSED__, void *ev) +{ + E_Manager *man; + E_Border *bd; + Ecore_X_Event_Ping *e; + + man = data; + e = ev; + + if (e->win != man->root) return 1; + + bd = e_border_find_by_client_window(e->event_win); + if (!bd) return 1; + + printf("PING response: %f\n", ecore_time_get() - bd->ping); + return 1; +} + #if 0 /* use later - maybe */ static int _e_manager_cb_window_destroy(void *data, int ev_type, void *ev){return 1;} static int _e_manager_cb_window_hide(void *data, int ev_type, void *ev){return 1;} ------------------------------------------------------- This SF.Net email is sponsored by: NEC IT Guy Games. How far can you shotput a projector? How fast can you ride your desk chair down the office luge track? If you want to score the big prize, get to know the little guy. Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs