[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [E-devel] E CVS: e kwo



I begun adding some sync stuff to ecore_x. Couldn't you complete that instead? So e17 could benefit from it in time too.

Sebastian

Enlightenment CVS wrote:
Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
E.h events.c ewins.h icccm.c mod-misc.c

Log Message:
Shuffle _NET_WM_SYNC_REQUEST support stuff around (still not active).

===================================================================
RCS file: /cvs/e/e16/e/src/E.h,v
retrieving revision 1.560
retrieving revision 1.561
diff -u -3 -r1.560 -r1.561
--- E.h	24 Jul 2006 21:10:58 -0000	1.560
+++ E.h	23 Aug 2006 19:06:21 -0000	1.561
@@ -389,6 +389,7 @@
       char                argb_internal_clients;
       char                argb_clients;
       char                argb_clients_inherit_attr;
+      char                use_sync;
    } testing;
    int                 deskmode;
    char                animate_shading;
@@ -425,6 +426,9 @@
 #ifdef HAS_XINERAMA
       char                xinerama_active;
 #endif
+#if USE_XSYNC
+      XID                 server_time;
+#endif
    } display;
    struct
    {
@@ -652,6 +656,7 @@
 #define EDBUG_TYPE_EVENTS       142
 #define EDBUG_TYPE_ICONBOX      143
 #define EDBUG_TYPE_VERBOSE      144
+#define EDBUG_TYPE_SYNC         145
int EventDebug(unsigned int type);
 void                EventDebugSet(unsigned int type, int value);
===================================================================
RCS file: /cvs/e/e16/e/src/events.c,v
retrieving revision 1.125
retrieving revision 1.126
diff -u -3 -r1.125 -r1.126
--- events.c	7 Aug 2006 23:19:17 -0000	1.125
+++ events.c	23 Aug 2006 19:06:21 -0000	1.126
@@ -88,23 +88,27 @@
 static void
 ExtInitSync(int available)
 {
+   int                 i, num;
+   XSyncSystemCounter *xssc;
+
    if (!available)
       return;
- if (EventDebug(EDBUG_TYPE_VERBOSE))
+   xssc = XSyncListSystemCounters(disp, &num);
+   for (i = 0; i < num; i++)
      {
-	int                 i, num;
-	XSyncSystemCounter *xssc;
-
-	xssc = XSyncListSystemCounters(disp, &num);
-	for (i = 0; i < num; i++)
-	  {
-	     Eprintf(" Sync counter %2d: %10s %#lx %#x:%#x\n", i,
-		     xssc[i].name, xssc[i].counter,
-		     XSyncValueHigh32(xssc[i].resolution),
-		     XSyncValueLow32(xssc[i].resolution));
-	  }
+	if (!strcmp(xssc[i].name, "SERVERTIME"))
+	   Mode.display.server_time = xssc[i].counter;
+	if (EventDebug(EDBUG_TYPE_SYNC))
+	   Eprintf(" Sync counter %2d: %10s %#lx %#x:%#x\n", i,
+		   xssc[i].name, xssc[i].counter,
+		   XSyncValueHigh32(xssc[i].resolution),
+		   XSyncValueLow32(xssc[i].resolution));
      }
+   XSyncFreeSystemCounterList(xssc);
+
+   if (Mode.display.server_time == None)
+      Conf.testing.use_sync = 0;
 }
 #endif
===================================================================
RCS file: /cvs/e/e16/e/src/ewins.h,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -3 -r1.55 -r1.56
--- ewins.h	7 Aug 2006 20:26:05 -0000	1.55
+++ ewins.h	23 Aug 2006 19:06:21 -0000	1.56
@@ -391,6 +391,12 @@
 EWin              **EwinListTransients(const EWin * ewin, int *num, int group);
 EWin              **EwinListTransientFor(const EWin * ewin, int *num);
+/* icccm.c (for now) */
+#if USE_XSYNC
+int                 EwinSyncRequestSend(EWin * ewin);
+void                EwinSyncRequestWait(EWin * ewin);
+#endif
+
 /* session.c */
 void                SessionGetInfo(EWin * ewin, Atom atom_change);
===================================================================
RCS file: /cvs/e/e16/e/src/icccm.c,v
retrieving revision 1.128
retrieving revision 1.129
diff -u -3 -r1.128 -r1.129
--- icccm.c	9 Aug 2006 02:45:02 -0000	1.128
+++ icccm.c	23 Aug 2006 19:06:21 -0000	1.129
@@ -29,11 +29,10 @@
 #include "session.h"
 #include "xwin.h"
 #if USE_XSYNC
+#include "timers.h"
 #include <X11/extensions/sync.h>
 #endif
-#undef USE_XSYNC /* No - Not sure this is safe */
-
 static void         ICCCM_SetIconSizes(void);
void
@@ -264,24 +263,6 @@
    if (EwinIsInternal(ewin))
       return;
-#if USE_XSYNC
-   if (ewin->ewmh.sync_request_enable && !EServerIsGrabbed())
-     {
-	long long           count;
-
-	count = ++ewin->ewmh.sync_request_count;
-
-	if (count == 0)
-	   ewin->ewmh.sync_request_count = ++count;
-	ecore_x_client_message32_send(EwinGetClientXwin(ewin),
-				      ECORE_X_ATOM_WM_PROTOCOLS,
-				      StructureNotifyMask,
-				      ECORE_X_ATOM_NET_WM_SYNC_REQUEST,
-				      Mode.events.time,
-				      count & 0xffffffff, count >> 32, 0);
-     }
-#endif
-
    ev.type = ConfigureNotify;
    ev.xconfigure.display = disp;
    ev.xconfigure.event = EwinGetClientXwin(ewin);
@@ -306,24 +287,6 @@
    ev.xconfigure.above = EoGetXwin(ewin);
    ev.xconfigure.override_redirect = False;
    XSendEvent(disp, EwinGetClientXwin(ewin), False, StructureNotifyMask, &ev);
-
-#if USE_XSYNC
-   if (ewin->ewmh.sync_request_enable && !EServerIsGrabbed())
-     {
-	XSyncWaitCondition  xswc[1];
-
-	xswc[0].trigger.counter = ewin->ewmh.sync_request_counter;
-	xswc[0].trigger.value_type = XSyncAbsolute;
-	XSyncIntsToValue(&xswc[0].trigger.wait_value,
-			 ewin->ewmh.sync_request_count & 0xffffffff,
-			 ewin->ewmh.sync_request_count >> 32);
-	xswc[0].trigger.test_type = XSyncPositiveComparison;
-	XSyncIntsToValue(&xswc[0].event_threshold, 0, 0);
-	Eprintf("Sync t=%#lx c=%llx\n", xswc[0].trigger.counter,
-		ewin->ewmh.sync_request_count);
-	XSyncAwait(disp, xswc, 1);
-     }
-#endif
 }
void
@@ -807,3 +770,60 @@
    ICCCM_Cmap(ewin);
    ICCCM_GetGeoms(ewin, atom_change);
 }
+
+#if USE_XSYNC
+int
+EwinSyncRequestSend(EWin * ewin)
+{
+   long long           count;
+
+   if (!Conf.testing.use_sync || !ewin->ewmh.sync_request_enable ||
+       EServerIsGrabbed())
+      return 0;
+
+   count = ++ewin->ewmh.sync_request_count;
+
+   if (count == 0)
+      ewin->ewmh.sync_request_count = ++count;
+   ecore_x_client_message32_send(EwinGetClientXwin(ewin),
+				 ECORE_X_ATOM_WM_PROTOCOLS,
+				 StructureNotifyMask,
+				 ECORE_X_ATOM_NET_WM_SYNC_REQUEST,
+				 Mode.events.time,
+				 count & 0xffffffff, count >> 32, 0);
+
+   return 1;
+}
+
+void
+EwinSyncRequestWait(EWin * ewin)
+{
+   XSyncWaitCondition  xswc[2];
+   double              t;
+
+   if (!Conf.testing.use_sync || !ewin->ewmh.sync_request_enable ||
+       EServerIsGrabbed())
+      return;
+
+   xswc[0].trigger.counter = ewin->ewmh.sync_request_counter;
+   xswc[0].trigger.value_type = XSyncAbsolute;
+   XSyncIntsToValue(&xswc[0].trigger.wait_value,
+		    ewin->ewmh.sync_request_count & 0xffffffff,
+		    ewin->ewmh.sync_request_count >> 32);
+   xswc[0].trigger.test_type = XSyncPositiveComparison;
+   XSyncIntsToValue(&xswc[0].event_threshold, 0, 0);
+
+   xswc[1].trigger.counter = Mode.display.server_time;
+   xswc[1].trigger.value_type = XSyncRelative;
+   XSyncIntsToValue(&xswc[1].trigger.wait_value, 1000, 0);	/* 1 sec */
+   xswc[1].trigger.test_type = XSyncPositiveComparison;
+   XSyncIntsToValue(&xswc[1].event_threshold, 0, 0);
+
+   t = GetTime();
+   XSyncAwait(disp, xswc, 2);
+   if (EventDebug(EDBUG_TYPE_SYNC))
+      Eprintf("Sync t=%#lx c=%llx: Delay=%8.6lf us\n",
+	      xswc[0].trigger.counter, ewin->ewmh.sync_request_count,
+	      GetTime() - t);
+}
+#endif /* USE_XSYNC */
===================================================================
RCS file: /cvs/e/e16/e/src/mod-misc.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -3 -r1.40 -r1.41
--- mod-misc.c	20 Aug 2006 19:30:55 -0000	1.40
+++ mod-misc.c	23 Aug 2006 19:06:21 -0000	1.41
@@ -156,6 +156,7 @@
    CFG_ITEM_BOOL(Conf, testing.argb_internal_clients, 0),
    CFG_ITEM_BOOL(Conf, testing.argb_clients, 0),
    CFG_ITEM_BOOL(Conf, testing.argb_clients_inherit_attr, 0),
+   CFG_ITEM_BOOL(Conf, testing.use_sync, 1),
CFG_ITEM_INT(Conf, deskmode, MODE_NONE),
    CFG_ITEM_BOOL(Conf, animate_shading, 1),



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs