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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel