We're over the extension event limit -- what are we going to do about it?

Aaron Plattner aplattner at nvidia.com
Tue Mar 30 10:59:08 PDT 2010


On Mon, Mar 29, 2010 at 08:23:57AM -0700, Adam Jackson wrote:
> On Sun, 2010-03-28 at 17:07 -0700, Aaron Plattner wrote:
> 
> > 1. Move the new DRI2 extension events to the Generic Event Extension.
> > 
> >    This is the cleanest solution because DRI2 is the extension that changed
> >    to put it over the limit.  Also, the code is brand new and has not been
> >    in an official release yet, so hopefully it's being used in the fewest
> >    places.
> 
> Not a bad idea in any event. (rimshot)
> 
> > 2. Drop some other extension with events that nobody uses.
> > 
> >    I'm sure we'll argue endlessly about which extension to remove.
> 
> Well, on a pre-DRI2 machine:
> 
> % xdpyinfo -queryExtensions | grep base.event | sed -e 's/(.*event:/@/' -e 's/[,)].*//' | sort -n -k2 -t @
>     MIT-SCREEN-SAVER  @ 64
>     XFree86-DGA  @ 65
>     XVideo  @ 72
>     Generic Event Extension  @ 74

On IRC, Julien pointed out that the Generic Event Extension extension
registers one extension event, but then uses the core GenericEvent instead
of X_GenericEvent.  On our customer's failing configuration, it was only
over the limit by one extension event, so just fixing this would be enough
to solve the problem.

>     SHAPE  @ 75
>     MIT-SHM  @ 76
>     XInputExtension  @ 77
>     SYNC  @ 94
>     XKEYBOARD  @ 96
>     XFIXES  @ 97
>     RANDR  @ 99
>     DAMAGE  @ 101
>     GLX  @ 102
>     SGI-GLX  @ 102
> 
> Ignoring GLX (which wants to be GLX2 someday anyway), XI and DGA are the
> greedy ones.  DGA's event encoding is shockingly stupid.  It just
> translates events up from the core space into DGA space.  But:
> 
> /* Event names.  Used in "type" field in XEvent structures.  Not to be
> confused with event masks above.  They start from 2 because 0 and 1
> are reserved in the protocol for errors and replies. */
> 
> #define KeyPress                2
> #define KeyRelease              3
> #define ButtonPress             4
> #define ButtonRelease           5
> #define MotionNotify            6
> 
> So it requests 7 events, and then 0 and 1 never get used.  Headdesk.

Fun times.


More information about the xorg-devel mailing list