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