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


-------------------------------------------------------------------------
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-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to