On Wed, Nov 25, 2009 at 16:42:59 -0500, Nathan Kidd wrote: > Hi, > > In the last few years inputproto's number of events (IEVENTS) has jumped > around quite a bit between 15 and 19, which has resulted in the > following issue I've recently became aware of: > > E.g. > > 1. xserver is built from inputproto with IEVENTS as 15 (e.g. SLES 10) > 15 is statically compiled into xserver. > 2. libXi is built some time later with IEVENTS as 17 (e.g. Fedora 11) > 17 is statically compiled into libXi. > 3. xclient runs on machine with new libXi > xclient -> QueryExtension(XKEYBOARD) > xserver <- event base 100 > xlib sets event_vec[100] to an xkeyboard WireToEvent function > xclient -> QueryExtension(XInputExtension) > xserver <- event base 85 > xlib sets event_vec[85 .. 85 + 17] xinput WireToEvent function, i.e. > OVERWRITES xkeyboard's WireToEvent proc because xserver only allowed for > 15 events between the event bases, since that's all it knew about when > it was built. > 4. the wrong WireToEvent function get's used on subsequent XKEYBOARD events > > On standard x.org the results aren't actually that terrible: XKEYBOARD > and LBX have their event bases right after XInputExtension so they're > the ones that get clobbered. Since nobody uses LBX there's no effect, > and XKEYBOARD seems to a) either not be very noticable when it fails b) > not be used so often in conjunction with XInputExtension, or c) my > googling just can't turn up any complaints. If you juggle around the > extensions (e.g. disable in xorg.conf) you can end up clobbering more > important/sensitive extension events with far worse results (here XFIXES > was after XInputExtension, triggering a segv in most gtk2 applications). > This sounds like it could be the cause of http://bugs.debian.org/515946 and/or http://bugs.debian.org/515734 which were reported by people using Xserver 1.4 with libXi 1.2, but were never diagnosed properly.
Cheers, Julien _______________________________________________ xorg mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/xorg
