Comment 13 for bug 277623

Revision history for this message
William Grant (wgrant) wrote :

The problem was dodgy X input devices in xorg.conf - in particular, tablet entries without the corresponding serial device actually existing.

The touchpad setting code in gnome-settings-daemon looked for DevicePresence notifications, and checked if they were of the DeviceAdded type. If they were, it proceeded to reconfigure all input devices. Setting the touchpad properties requires opening each device, and checking if it has the right properties. When X sees a device open request for the non-existent tablet, it revives the X device to look for the serial device, which triggers another DeviceAdded event. g-s-d notices this. Rinse. Repeat. Chaos ensues.

The fix for this was to dig through the xserver code and work out that I should be looking for DeviceEnabled rather than DeviceAdded. The device for the missing tablet never finishes initialising, so never fires a DeviceEnabled.

Since the Synaptics touchpad driver now reports itself as being of type XI_TOUCHPAD rather than XI_MOUSE, I also added further checks to not even bother opening a device if it isn't an XI_TOUCHPAD.