Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_x


Modified Files:
        Ecore_X.h Ecore_X_Atoms.h ecore_x_events.c ecore_x_netwm.c 
        ecore_x_sync.c 


Log Message:
XSync and netwm sync.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v
retrieving revision 1.133
retrieving revision 1.134
diff -u -3 -r1.133 -r1.134
--- Ecore_X.h   6 Jun 2005 09:40:00 -0000       1.133
+++ Ecore_X.h   6 Jun 2005 15:04:28 -0000       1.134
@@ -46,6 +46,8 @@
 typedef Ecore_X_ID   Ecore_X_Time;
 typedef Ecore_X_ID   Ecore_X_Cursor;
 typedef void         Ecore_X_Display;
+typedef Ecore_X_ID   Ecore_X_Sync_Counter;
+typedef Ecore_X_ID   Ecore_X_Sync_Alarm;
 
 #ifdef __cplusplus
 extern "C" {
@@ -631,7 +633,8 @@
 
 struct _Ecore_X_Event_Sync_Alarm
 {
-   Ecore_X_Time    time;
+   Ecore_X_Time       time;
+   Ecore_X_Sync_Alarm alarm;
 };
 
 struct _Ecore_X_Event_Window_Delete_Request
@@ -1242,7 +1245,6 @@
 EAPI int                 ecore_x_netwm_icon_get(Ecore_X_Window win, int 
*width, int *height, unsigned int **data, int *num);
 EAPI void                ecore_x_netwm_icon_geometry_set(Ecore_X_Window win, 
int x, int y, int width, int height);
 EAPI int                 ecore_x_netwm_icon_geometry_get(Ecore_X_Window win, 
int *x, int *y, int *width, int *height);
-EAPI void                ecore_x_netwm_ping(Ecore_X_Window win);
 EAPI void                ecore_x_netwm_pid_set(Ecore_X_Window win, int pid);
 EAPI int                 ecore_x_netwm_pid_get(Ecore_X_Window win, int *pid);
 EAPI void                ecore_x_netwm_handled_icons_set(Ecore_X_Window win);
@@ -1263,6 +1265,11 @@
 EAPI int                 ecore_x_netwm_opacity_get(Ecore_X_Window win, 
unsigned int *opacity);
 EAPI void                ecore_x_netwm_frame_size_set(Ecore_X_Window win, int 
fl, int fr, int ft, int fb);
 EAPI int                 ecore_x_netwm_frame_size_get(Ecore_X_Window win, int 
*fl, int *fr, int *ft, int *fb);
+EAPI void                ecore_x_netwm_ping(Ecore_X_Window win);
+EAPI int                 ecore_x_netwm_sync_counter_get(Ecore_X_Window win, 
Ecore_X_Sync_Counter *counter);
+EAPI void                ecore_x_netwm_sync_request_send(Ecore_X_Window win, 
unsigned int serial);
+
+
 
 EAPI void                ecore_x_e_init(void);
 EAPI void                ecore_x_e_frame_size_set(Ecore_X_Window win, int fl, 
int fr, int ft, int fb);
@@ -1344,6 +1351,10 @@
 EAPI void ecore_x_pointer_last_xy_get(int *x, int *y);
 EAPI void ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y);
        
+/* ecore_x_sync.c */
+EAPI Ecore_X_Sync_Alarm ecore_x_sync_alarm_new(Ecore_X_Sync_Counter counter);
+EAPI int                ecore_x_sync_alarm_free(Ecore_X_Sync_Alarm alarm);
+
 #ifdef __cplusplus
 }
 #endif
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X_Atoms.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- Ecore_X_Atoms.h     28 May 2005 12:49:40 -0000      1.9
+++ Ecore_X_Atoms.h     6 Jun 2005 15:04:28 -0000       1.10
@@ -121,6 +121,7 @@
 
 extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_PING;
 extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_SYNC_REQUEST;
+extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER;
 
 /* Selections */
 extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_TARGETS;
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -3 -r1.63 -r1.64
--- ecore_x_events.c    6 Jun 2005 09:40:00 -0000       1.63
+++ ecore_x_events.c    6 Jun 2005 15:04:28 -0000       1.64
@@ -1535,10 +1535,12 @@
 {
    XSyncAlarmNotifyEvent *sync_alarm_event;
    Ecore_X_Event_Sync_Alarm *e;
-   
+
    sync_alarm_event = (XSyncAlarmNotifyEvent *)xevent;
+
    e = calloc(1, sizeof(Ecore_X_Event_Sync_Alarm));
    if (!e) return;
    e->time = sync_alarm_event->time;
+   e->alarm = sync_alarm_event->alarm;
    ecore_event_add(ECORE_X_EVENT_SYNC_ALARM, e, NULL, NULL);
 }
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_netwm.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- ecore_x_netwm.c     5 Jun 2005 14:38:42 -0000       1.32
+++ ecore_x_netwm.c     6 Jun 2005 15:04:28 -0000       1.33
@@ -268,6 +268,7 @@
 
 Ecore_X_Atom        ECORE_X_ATOM_NET_WM_PING = 0;
 Ecore_X_Atom        ECORE_X_ATOM_NET_WM_SYNC_REQUEST = 0;
+Ecore_X_Atom        ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER = 0;
 
 void
 ecore_x_netwm_init(void)
@@ -363,6 +364,7 @@
 
    ECORE_X_ATOM_NET_WM_PING = _ATOM_GET("_NET_WM_PING");
    ECORE_X_ATOM_NET_WM_SYNC_REQUEST = _ATOM_GET("_NET_WM_SYNC_REQUEST");
+   ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER = 
_ATOM_GET("_NET_WM_SYNC_REQUEST_COUNTER");
 }
 
 /*
@@ -1330,3 +1332,38 @@
 
    XSendEvent(_ecore_x_disp, win, False, NoEventMask, &xev);
 }
+
+int
+ecore_x_netwm_sync_counter_get(Ecore_X_Window win, Ecore_X_Sync_Counter 
*counter)
+{
+   int          ret;
+   unsigned int tmp;
+
+   ret = ecore_x_window_prop_card32_get(win, 
ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER,
+                                       &tmp, 1);
+
+   if (counter) *counter = tmp;
+   return ret == 1 ? 1 : 0;
+}
+
+void
+ecore_x_netwm_sync_request_send(Ecore_X_Window win, unsigned int serial)
+{
+   XSyncValue value;
+   XEvent xev;
+
+   XSyncIntToValue(&value, serial);
+
+   xev.xclient.type = ClientMessage;
+   xev.xclient.display = _ecore_x_disp;
+   xev.xclient.window = win;
+   xev.xclient.message_type = ECORE_X_ATOM_WM_PROTOCOLS;
+   xev.xclient.format = 32;
+   xev.xclient.data.l[0] = ECORE_X_ATOM_NET_WM_SYNC_REQUEST;
+   xev.xclient.data.l[1] = CurrentTime;
+   xev.xclient.data.l[2] = XSyncValueLow32(value);
+   xev.xclient.data.l[3] = XSyncValueHigh32(value);
+   xev.xclient.data.l[4] = 0;
+
+   XSendEvent(_ecore_x_disp, win, False, 0, &xev);
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_sync.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- ecore_x_sync.c      6 Jun 2005 09:40:00 -0000       1.1
+++ ecore_x_sync.c      6 Jun 2005 15:04:28 -0000       1.2
@@ -9,3 +9,40 @@
 #include "Ecore_X.h"
 #include "Ecore_X_Atoms.h"
 
+Ecore_X_Sync_Alarm
+ecore_x_sync_alarm_new(Ecore_X_Sync_Counter counter)
+{
+   Ecore_X_Sync_Alarm alarm;
+   XSyncAlarmAttributes values;
+   XSyncValue init;
+
+   XSyncIntToValue(&init, 0);
+   XSyncSetCounter(_ecore_x_disp, counter, init);
+   
+   values.trigger.counter = counter;
+   values.trigger.value_type = XSyncAbsolute;
+   XSyncIntToValue(&values.trigger.wait_value, 1);
+   values.trigger.test_type = XSyncPositiveComparison;
+
+   XSyncIntToValue(&values.delta, 1);
+
+   values.events = True;
+
+   alarm = XSyncCreateAlarm(_ecore_x_disp,
+                           XSyncCACounter |
+                           XSyncCAValueType |
+                           XSyncCAValue |
+                           XSyncCATestType |
+                           XSyncCADelta |
+                           XSyncCAEvents,
+                           &values);
+
+   ecore_x_sync();
+   return alarm;
+}
+
+int
+ecore_x_sync_alarm_free(Ecore_X_Sync_Alarm alarm)
+{
+   return XSyncDestroyAlarm(_ecore_x_disp, alarm);
+}




-------------------------------------------------------
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