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

Reply via email to