Comment 23 for bug 293318

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

An intrepid-proposed debdiff is coming shortly. Here's a description of the problem and its fix:

==
The problem was broken X input devices defined 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.