Comment 40 for bug 281610

Revision history for this message
In , Michel-tungstengraphics (michel-tungstengraphics) wrote :

Created an attachment (id=19814)
Possible fix: look at all bytes of dev->enabled

Okay, I've been able to trace this with gdb (I guess I was inadvertently using the kernel DRM and thus hitting the xkbcomp fork hilarity...), and it indeed looks like a classic endianness bug:

dev->enabled is a Bool, which is typedefed to int. However, the XI_PROP_ENABLED related code in dix/devices.c only looks at the first byte of it (which happens to work with little endian). This patch fixes it for me, but I'm not sure how it fits into the bigger picture; another possibility would be to use a CARD8 local variable instead of dev->enabled directly in the XIChangeDeviceProperty() callers.