From f5687a6741a19ef3081e7fd83ac55f6df8bcd5c2 Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Sun, 19 Sep 2010 09:49:59 +0200 Subject: config: don't autoprobe when device was set If device was already set, we were asked to handle that specific device and we should not go probing around. If we do, we might end up handling a device different from what the X server thinks we are handling, with dire consequences in case of hot plugging and unplugging. Without this patch, a situation such as the following can happen. A user has both a built-in laptop touchpad and a tablet such as the Wacom Bamboo Pen & Touch, that is also exposed as a touchpad. The tablet is plugged in before the server starts, and during setup the server calls the synaptic driver for the /dev/input/mouseX device corresponding to the touch device of the tablet; we end up in the autoprobe path even though `device' was set, and the driver scans /dev/input, where the first useful device it finds is the event device for the built-in touchpad. The driver starts managing the built-in touchpad, preventing future instances from managing it too, while the server thinks the driver is managing the tablet. When the user disconnects the tablet, the corresponding instance of the synpatics driver (which is actually managing the touchpad instead) is unloaded: the built-in touchpad stops working in X. Signed-off-by: Giuseppe Bilotta Reviewed-by: Chase Douglas Signed-off-by: Peter Hutterer --- src/synaptics.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/synaptics.c b/src/synaptics.c index 57b463c..d112550 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -275,7 +275,7 @@ SetDeviceAndProtocol(InputInfoPtr pInfo) proto = SYN_PROTO_ALPS; } else { /* default to auto-dev */ #ifdef BUILD_EVENTCOMM - if (event_proto_operations.AutoDevProbe(pInfo)) + if (!device && event_proto_operations.AutoDevProbe(pInfo)) proto = SYN_PROTO_EVENT; #endif } -- cgit v1.2.3