Looking at the diff between libXi 1.6.0 (used in 12.04) and libXi 1.6.1 (used in 12.10) shows this in the notes:
+ Consecutive calls to XIQueryVersion by the same client always return the
+ first returned major.minor version. If the client requests a version
+ lower than the first returned major.minor version in a subsequent call, a
+ BadValue error occurs.
Looking deeper at the xtrace I captured before this looks to be exactly what is happening:
Looking at the diff between libXi 1.6.0 (used in 12.04) and libXi 1.6.1 (used in 12.10) shows this in the notes:
+ Consecutive calls to XIQueryVersion by the same client always return the
+ first returned major.minor version. If the client requests a version
+ lower than the first returned major.minor version in a subsequent call, a
+ BadValue error occurs.
Looking deeper at the xtrace I captured before this looks to be exactly what is happening:
000:<:0096: 8: XInputExtension -Request( 131,47) : XIQueryVersion major=2 minor=1
000:>:0096:32: Reply to XIQueryVersion: major=2 minor=1
[...]
000:<:0100: 8: XInputExtension -Request( 131,47) : XIQueryVersion major=2 minor=0
000:>:0100:Error 2=Value: major=131, minor=47, bad=2
X Error: BadValue (integer parameter out of range for operation) 2
Extension: 131 (XInputExtension)
Minor opcode: 47 ()
Resource id: 0x2