Re: [RFC XI 2.1 - inputproto] Add touch classes and events, bump to 2.1
On 11/19/2010 12:52 AM, Peter Hutterer wrote: On Wed, Nov 17, 2010 at 11:59:47AM -0500, Chase Douglas wrote: [...] @@ -177,5 +189,8 @@ #define XI_RawButtonPressMask(1 XI_RawButtonPress) #define XI_RawButtonReleaseMask (1 XI_RawButtonRelease) #define XI_RawMotionMask (1 XI_RawMotion) +#define XI_TouchBeginMask(1 XI_TouchBegin) +#define XI_TouchEndMask (1 XI_TouchEnd) +#define XI_TouchMotionMask (1 XI_TouchMotion) If it is a requirement to register for all three, a XI_TouchMask may be in order as (XI_TouchBeginMask | XI_TouchMotionMask | XI_TouchEndMask). Good idea :). [...] -4.4. The ClientPointer principle +4.4 Touch device support +Touch event processing differs from normal event processing in ways, most +notably in that touch events are processed partially out-of-band from +pointer and keyboard events. + +Touch input follows a three-stage cycle: init - move - destroy, i.e. +init the sequence by touching the device, move the current touch +location, destroy the sequence by ceasing to touch the device. +The init and destroy stage of this sequence are always present, the move +stage is optional. Within this document, the term touch sequence is used to +describe the above chain of events. A client wishing to receive touch events +must register for all three touch events simultaneously. + +Touch events are sent to all clients registered for them on any window in the +window tree from the root window to the child window directly under the touch. Define directly under the touch for DependentTouch mode devices? Good point :). I forgot to cover the difference between direct and dependent devices here. + +A touch event is not delivered according to the device hierarchy. All touch +events are sent only through their originating slave devices. even for DependentTouch devices? the whole point of them is that they're relative to the cursor position, so there is a strong dependency between the two. if events aren't delivered through the master device, why attach them in the first place? Should we consider them as new device type? (I know some of these questions have cropped up before, but I'd like to reiterate them here nonetheless) There is a strong dependency between the two in the dependent touch device case. For example, and I need to note this in the protocol spec too, if a slave dependent device is not attached to a master device it will not emit any touch events. However, even though dependent touch device behaviour depends on the device hierarchy, funnelling events through the master device seems pointless and confusing. The point of a master device is to coallesce all attached slave devices into a single cursor. Touch devices have no effect on the cursor (save for pointer emulation performed in the input module, but that's different). The only master device data needed by the client is the location of the cursor, which is provided through the root and event coordinates in the touch device events. The raw MT coordinates are provided through valuators in device coordinate space. I don't see any benefit to treating touch devices as a new device type either. That's not to say I couldn't be persuaded if a need was identified. [...] @@ -1543,6 +1685,25 @@ EVENTHEADER { type: BYTE locked_group XKB locked group state. +XI 2.1: + +A TouchBegin event is generated whenever a new touch sequence initializes +A TouchEnd event is generated whenever a touch sequence ceases. A +TouchMotion event is generated whenever a touch axis valuator value +changes. + +The average finger size is significantly larger than one pixel. The +selection of the hotspot of a touchpoint is implementation dependent and +may not be the logical center of the touch. + +Touch tracking IDs are always provided through one of the touch axis +valuators. Its value is always provided in every touch event. Tracking IDs +are represented as unsigned 32-bit values and are required to increase in +value for each new touch. Values will wrap back to 0 upon reaching the +numerical limit of IDs. why not stuff the tracking ID into the detail field, it's unused for touch events anyway? having a valuator track IDs is just bad design. I wasn't too crazy about having tracking IDs as just another valuator either, but I wasn't sure what device event field I could override. After taking another look, the detail field looks to be a good place to stuff the tracking ID. + +Touch events do not generate enter/leave events. + ┌─── RawEvent EVENTHEADER @@ -1675,3 +1836,27 @@ EVENTHEADER { type: BYTE ❧❧❧ + + +Appendix A: XI 2.1 Use-cases + +All use-cases that include the receiving and processing
Re: [RFC XI 2.1 - inputproto] Add touch classes and events, bump to 2.1
On Wed, Nov 17, 2010 at 11:59:47AM -0500, Chase Douglas wrote: Introduce multitouch support through a new TouchClass, as well as new TouchBegin, TouchEnd and TouchMotion events. Bump to version 2.1. Based on an initial patch by Daniel Stone (headers) and Peter Hutterer (protocol documentation). Signed-off-by: Daniel Stone dan...@fooishbar.org Signed-off-by: Chase Douglas chase.doug...@canonical.com --- XI2.h| 19 +- XI2proto.h | 25 XI2proto.txt | 191 +- configure.ac |2 +- 4 files changed, 231 insertions(+), 6 deletions(-) diff --git a/XI2.h b/XI2.h index 6ba1377..5d407ea 100644 --- a/XI2.h +++ b/XI2.h @@ -36,6 +36,7 @@ #define XI_2_Major 2 #define XI_2_Minor 0 +#define XI_2_1_Minor1 /* Property event flags */ #define XIPropertyDeleted 0 @@ -113,15 +114,23 @@ #define XISlaveKeyboard 4 #define XIFloatingSlave 5 -/* Device classes */ +/* Device classes: classes that are not identical to Xi 1.x classes must be + * numbered starting from 8. */ #define XIKeyClass 0 #define XIButtonClass 1 #define XIValuatorClass 2 +#define XITouchClass8 +#define XITouchValuatorClass9 /* Device event flags (common) */ /* Device event flags (key events only) */ #define XIKeyRepeat (1 16) /* Device event flags (pointer events only) */ +#define XITouchPointer (1 24) + +/* Touch modes */ +#define XIDirectTouch 1 +#define XIDependentTouch2 /* XI2 event mask macros */ #define XISetMask(ptr, event) (((unsigned char*)(ptr))[(event)3] |= (1 ((event) 7))) @@ -151,7 +160,10 @@ #define XI_RawButtonPress15 #define XI_RawButtonRelease 16 #define XI_RawMotion 17 -#define XI_LASTEVENT XI_RawMotion +#define XI_TouchBegin18 +#define XI_TouchEnd 19 +#define XI_TouchMotion 20 +#define XI_LASTEVENT XI_TouchMotion /* NOTE: XI2LASTEVENT in xserver/include/inputstr.h must be the same value * as XI_LASTEVENT if the server is supposed to handle masks etc. for this * type of event. */ @@ -177,5 +189,8 @@ #define XI_RawButtonPressMask(1 XI_RawButtonPress) #define XI_RawButtonReleaseMask (1 XI_RawButtonRelease) #define XI_RawMotionMask (1 XI_RawMotion) +#define XI_TouchBeginMask(1 XI_TouchBegin) +#define XI_TouchEndMask (1 XI_TouchEnd) +#define XI_TouchMotionMask (1 XI_TouchMotion) If it is a requirement to register for all three, a XI_TouchMask may be in order as (XI_TouchBeginMask | XI_TouchMotionMask | XI_TouchEndMask). #endif /* _XI2_H_ */ diff --git a/XI2proto.h b/XI2proto.h index 84574a5..418c23d 100644 --- a/XI2proto.h +++ b/XI2proto.h @@ -188,6 +188,31 @@ typedef struct { uint16_tpad2; } xXIValuatorInfo; +/** + * Denotes multitouch capability on a device. + */ +typedef struct { +uint16_ttype; /** Always TouchClass */ +uint16_tlength; /** Length in 4 byte units */ +uint16_tsourceid; /** source device for this class */ +uint8_t mode; /** DirectTouch or DependentTouch */ +uint8_t num_touches;/** Maximum number of touches */ +} xXITouchInfo; + +/** + * Denotes a multitouch valuator capability on a device. + * One XITouchValuatorInfo describes exactly one valuator (axis) on the device. + */ +typedef struct { +uint16_ttype; /** Always TouchValuatorClass */ +uint16_tlength; /** Length in 4 byte units */ +uint16_tsourceid; /** source device for this class */ +uint16_tnumber; /** Valuator number*/ +Atomlabel; /** Axis label */ +FP3232 min;/** Min value */ +FP3232 max;/** Max value */ +uint32_tresolution; /** Resolutions in units/m */ +} xXITouchValuatorInfo; /** * Used to select for events on a given window. diff --git a/XI2proto.txt b/XI2proto.txt index 10f58c2..fd47643 100644 --- a/XI2proto.txt +++ b/XI2proto.txt @@ -1,6 +1,7 @@ The X Input Extension Version 2.0 +Version 2.1 Peter Hutterer peter.hutte...@redhat.com @@ -31,6 +32,40
Re: [RFC XI 2.1 - inputproto] Add touch classes and events, bump to 2.1
On 11/17/2010 01:25 AM, Peter Hutterer wrote: On Fri, Nov 12, 2010 at 05:35:01PM -0500, Chase Douglas wrote: diff --git a/XI2.h b/XI2.h index 6ba1377..f3ee7f0 100644 --- a/XI2.h +++ b/XI2.h @@ -32,10 +32,12 @@ #define Dont_Check 0 #endif #define XInput_2_0 7 +#define XInput_2_1 8 coincidentally, that's a libXi-internal define that should be removed from the protocol headers. I've got the patch ready for this, leave this one as-is for now. Ok. --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ([2.60]) -AC_INIT([InputProto], [2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_INIT([InputProto], [2.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) bump to version 2.0.99.1 is better for now, we can't possibly claim this is stable yet :) Good point! AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE -- 1.7.1 I would _really_ like to see the XI2proto.txt patch for this too to see the semantics of these changes. Ok, I applied the big diff of the XI2proto.txt from your multitouch tree and modified it where appropriate. I deleted all references to grabbing and did not add any new grab-like semantics at this time. Reviewed-by: Peter Hutterer peter.hutte...@who-t.net for this patch, but that's without knowing wider implications based on the semantics. I've not added your tag since I added the XI2proto.txt changes. Please review again to be sure everything seems good. I'm going to assume that a Reviewed-by tag from you and Daniel is a mark of consensus agreement on the protocol changes laid out in the commit. I pushed the changes to my repo on fdo, and I'll send a new patch so we can do further inline review. Thanks, -- Chase ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[RFC XI 2.1 - inputproto] Add touch classes and events, bump to 2.1
Introduce multitouch support through a new TouchClass, as well as new TouchBegin, TouchEnd and TouchMotion events. Bump to version 2.1. Based on an initial patch by Daniel Stone (headers) and Peter Hutterer (protocol documentation). Signed-off-by: Daniel Stone dan...@fooishbar.org Signed-off-by: Chase Douglas chase.doug...@canonical.com --- XI2.h| 19 +- XI2proto.h | 25 XI2proto.txt | 191 +- configure.ac |2 +- 4 files changed, 231 insertions(+), 6 deletions(-) diff --git a/XI2.h b/XI2.h index 6ba1377..5d407ea 100644 --- a/XI2.h +++ b/XI2.h @@ -36,6 +36,7 @@ #define XI_2_Major 2 #define XI_2_Minor 0 +#define XI_2_1_Minor1 /* Property event flags */ #define XIPropertyDeleted 0 @@ -113,15 +114,23 @@ #define XISlaveKeyboard 4 #define XIFloatingSlave 5 -/* Device classes */ +/* Device classes: classes that are not identical to Xi 1.x classes must be + * numbered starting from 8. */ #define XIKeyClass 0 #define XIButtonClass 1 #define XIValuatorClass 2 +#define XITouchClass8 +#define XITouchValuatorClass9 /* Device event flags (common) */ /* Device event flags (key events only) */ #define XIKeyRepeat (1 16) /* Device event flags (pointer events only) */ +#define XITouchPointer (1 24) + +/* Touch modes */ +#define XIDirectTouch 1 +#define XIDependentTouch2 /* XI2 event mask macros */ #define XISetMask(ptr, event) (((unsigned char*)(ptr))[(event)3] |= (1 ((event) 7))) @@ -151,7 +160,10 @@ #define XI_RawButtonPress15 #define XI_RawButtonRelease 16 #define XI_RawMotion 17 -#define XI_LASTEVENT XI_RawMotion +#define XI_TouchBegin18 +#define XI_TouchEnd 19 +#define XI_TouchMotion 20 +#define XI_LASTEVENT XI_TouchMotion /* NOTE: XI2LASTEVENT in xserver/include/inputstr.h must be the same value * as XI_LASTEVENT if the server is supposed to handle masks etc. for this * type of event. */ @@ -177,5 +189,8 @@ #define XI_RawButtonPressMask(1 XI_RawButtonPress) #define XI_RawButtonReleaseMask (1 XI_RawButtonRelease) #define XI_RawMotionMask (1 XI_RawMotion) +#define XI_TouchBeginMask(1 XI_TouchBegin) +#define XI_TouchEndMask (1 XI_TouchEnd) +#define XI_TouchMotionMask (1 XI_TouchMotion) #endif /* _XI2_H_ */ diff --git a/XI2proto.h b/XI2proto.h index 84574a5..418c23d 100644 --- a/XI2proto.h +++ b/XI2proto.h @@ -188,6 +188,31 @@ typedef struct { uint16_tpad2; } xXIValuatorInfo; +/** + * Denotes multitouch capability on a device. + */ +typedef struct { +uint16_ttype; /** Always TouchClass */ +uint16_tlength; /** Length in 4 byte units */ +uint16_tsourceid; /** source device for this class */ +uint8_t mode; /** DirectTouch or DependentTouch */ +uint8_t num_touches;/** Maximum number of touches */ +} xXITouchInfo; + +/** + * Denotes a multitouch valuator capability on a device. + * One XITouchValuatorInfo describes exactly one valuator (axis) on the device. + */ +typedef struct { +uint16_ttype; /** Always TouchValuatorClass */ +uint16_tlength; /** Length in 4 byte units */ +uint16_tsourceid; /** source device for this class */ +uint16_tnumber; /** Valuator number*/ +Atomlabel; /** Axis label */ +FP3232 min;/** Min value */ +FP3232 max;/** Max value */ +uint32_tresolution; /** Resolutions in units/m */ +} xXITouchValuatorInfo; /** * Used to select for events on a given window. diff --git a/XI2proto.txt b/XI2proto.txt index 10f58c2..fd47643 100644 --- a/XI2proto.txt +++ b/XI2proto.txt @@ -1,6 +1,7 @@ The X Input Extension Version 2.0 +Version 2.1 Peter Hutterer peter.hutte...@redhat.com @@ -31,6 +32,40 @@ used on applications employing the core protocol. XI2 addresses both of these issues by enabling devices to be both extended and core devices and providing device information in each event (with the exception of core events). +1.1 X Input Extension version 2.1 (XI 2.1) +XI 2.1 introduces support for multi-touch devices. The
Re: [RFC XI 2.1 - inputproto] Add touch classes and events, bump to 2.1
On Fri, Nov 12, 2010 at 05:35:01PM -0500, Chase Douglas wrote: Introduce multitouch support through a new TouchClass, as well as new TouchBegin, TouchEnd and TouchMotion events. Bump to version 2.1. Signed-off-by: Daniel Stone dan...@fooishbar.org Signed-off-by: Chase Douglas chaes.doug...@canonical.com --- XI2.h| 20 ++-- XI2proto.h | 25 + configure.ac |2 +- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/XI2.h b/XI2.h index 6ba1377..f3ee7f0 100644 --- a/XI2.h +++ b/XI2.h @@ -32,10 +32,12 @@ #define Dont_Check 0 #endif #define XInput_2_0 7 +#define XInput_2_1 8 coincidentally, that's a libXi-internal define that should be removed from the protocol headers. I've got the patch ready for this, leave this one as-is for now. #define XI_2_Major 2 #define XI_2_Minor 0 +#define XI_2_1_Minor1 /* Property event flags */ #define XIPropertyDeleted 0 @@ -113,15 +115,23 @@ #define XISlaveKeyboard 4 #define XIFloatingSlave 5 -/* Device classes */ +/* Device classes: classes that are not identical to Xi 1.x classes must be + * numbered starting from 8. */ #define XIKeyClass 0 #define XIButtonClass 1 #define XIValuatorClass 2 +#define XITouchClass8 +#define XITouchValuatorClass9 /* Device event flags (common) */ /* Device event flags (key events only) */ #define XIKeyRepeat (1 16) /* Device event flags (pointer events only) */ +#define XITouchPointer (1 24) + +/* Touch modes */ +#define XIDirectTouch 1 +#define XIDependentTouch2 /* XI2 event mask macros */ #define XISetMask(ptr, event) (((unsigned char*)(ptr))[(event)3] |= (1 ((event) 7))) @@ -151,7 +161,10 @@ #define XI_RawButtonPress15 #define XI_RawButtonRelease 16 #define XI_RawMotion 17 -#define XI_LASTEVENT XI_RawMotion +#define XI_TouchBegin18 +#define XI_TouchEnd 19 +#define XI_TouchMotion 20 +#define XI_LASTEVENT XI_TouchMotion /* NOTE: XI2LASTEVENT in xserver/include/inputstr.h must be the same value * as XI_LASTEVENT if the server is supposed to handle masks etc. for this * type of event. */ @@ -177,5 +190,8 @@ #define XI_RawButtonPressMask(1 XI_RawButtonPress) #define XI_RawButtonReleaseMask (1 XI_RawButtonRelease) #define XI_RawMotionMask (1 XI_RawMotion) +#define XI_TouchBeginMask(1 XI_TouchBegin) +#define XI_TouchEndMask (1 XI_TouchEnd) +#define XI_TouchMotionMask (1 XI_TouchMotion) #endif /* _XI2_H_ */ diff --git a/XI2proto.h b/XI2proto.h index 84574a5..418c23d 100644 --- a/XI2proto.h +++ b/XI2proto.h @@ -188,6 +188,31 @@ typedef struct { uint16_tpad2; } xXIValuatorInfo; +/** + * Denotes multitouch capability on a device. + */ +typedef struct { +uint16_ttype; /** Always TouchClass */ +uint16_tlength; /** Length in 4 byte units */ +uint16_tsourceid; /** source device for this class */ +uint8_t mode; /** DirectTouch or DependentTouch */ +uint8_t num_touches;/** Maximum number of touches */ +} xXITouchInfo; + +/** + * Denotes a multitouch valuator capability on a device. + * One XITouchValuatorInfo describes exactly one valuator (axis) on the device. + */ +typedef struct { +uint16_ttype; /** Always TouchValuatorClass */ +uint16_tlength; /** Length in 4 byte units */ +uint16_tsourceid; /** source device for this class */ +uint16_tnumber; /** Valuator number*/ +Atomlabel; /** Axis label */ +FP3232 min;/** Min value */ +FP3232 max;/** Max value */ +uint32_tresolution; /** Resolutions in units/m */ +} xXITouchValuatorInfo; /** * Used to select for events on a given window. diff --git a/configure.ac b/configure.ac index 7466dc3..7f3c1a2 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ([2.60]) -AC_INIT([InputProto], [2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_INIT([InputProto], [2.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) bump to version 2.0.99.1 is better
Re: [RFC XI 2.1 - inputproto] Add touch classes and events, bump to 2.1
On 11/12/2010 08:57 PM, Cyril Brulebois wrote: Hi, Chase Douglas chase.doug...@canonical.com (12/11/2010): Introduce multitouch support through a new TouchClass, as well as new TouchBegin, TouchEnd and TouchMotion events. Bump to version 2.1. Signed-off-by: Daniel Stone dan...@fooishbar.org Signed-off-by: Chase Douglas chaes.doug...@canonical.com --- XI2.h| 20 ++-- XI2proto.h | 25 + configure.ac |2 +- 3 files changed, 44 insertions(+), 3 deletions(-) JFTR: to apply it to master, s/2.0/2.0.1/ in the removed line for configure.ac (see below), that's all: -AC_INIT([InputProto], [2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_INIT([InputProto], [2.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) Shouldn't it be 2.1? The changes are to implement XI 2.1. Instead, are you saying that the xserver master branch, without any of the other patches, fails to build against this inputproto package if it's incremented to 2.1? Thanks, -- Chase ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [RFC XI 2.1 - inputproto] Add touch classes and events, bump to 2.1
Chase Douglas chase.doug...@canonical.com (15/11/2010): JFTR: to apply it to master, s/2.0/2.0.1/ in the removed line for configure.ac (see below), that's all: -AC_INIT([InputProto], [2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_INIT([InputProto], [2.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) Shouldn't it be 2.1? I meant to say that the patch fails to apply on master as is, since the removed line is different in your patch (2.0) and on master (2.0.1), and that just adjusting the (sub)version is sufficient to get it applied. I hope it's clearer now, and sorry for the poor wording. Mraw, KiBi. signature.asc Description: Digital signature ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [RFC XI 2.1 - inputproto] Add touch classes and events, bump to 2.1
On 11/15/2010 01:35 PM, Chase Douglas wrote: On 11/12/2010 08:57 PM, Cyril Brulebois wrote: Hi, Chase Douglas chase.doug...@canonical.com (12/11/2010): Introduce multitouch support through a new TouchClass, as well as new TouchBegin, TouchEnd and TouchMotion events. Bump to version 2.1. Signed-off-by: Daniel Stone dan...@fooishbar.org Signed-off-by: Chase Douglas chaes.doug...@canonical.com --- XI2.h| 20 ++-- XI2proto.h | 25 + configure.ac |2 +- 3 files changed, 44 insertions(+), 3 deletions(-) JFTR: to apply it to master, s/2.0/2.0.1/ in the removed line for configure.ac (see below), that's all: -AC_INIT([InputProto], [2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_INIT([InputProto], [2.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) Shouldn't it be 2.1? The changes are to implement XI 2.1. Instead, are you saying that the xserver master branch, without any of the other patches, fails to build against this inputproto package if it's incremented to 2.1? Nevermind, I understand what you're getting at. I didn't think inputproto would be changed before XI 2.1, but Peter pushed a version bump to 2.0.1 5 days ago :). I've pushed an update to: http://cgit.freedesktop.org/~cndougla/inputproto/log/?h=xi2.1-new Thanks, -- Chase ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [RFC XI 2.1 - inputproto] Add touch classes and events, bump to 2.1
Hi, Chase Douglas chase.doug...@canonical.com (12/11/2010): Introduce multitouch support through a new TouchClass, as well as new TouchBegin, TouchEnd and TouchMotion events. Bump to version 2.1. Signed-off-by: Daniel Stone dan...@fooishbar.org Signed-off-by: Chase Douglas chaes.doug...@canonical.com --- XI2.h| 20 ++-- XI2proto.h | 25 + configure.ac |2 +- 3 files changed, 44 insertions(+), 3 deletions(-) JFTR: to apply it to master, s/2.0/2.0.1/ in the removed line for configure.ac (see below), that's all: -AC_INIT([InputProto], [2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_INIT([InputProto], [2.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) Mraw, KiBi. signature.asc Description: Digital signature ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel