summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2008-06-12 11:23:10 +0930
committerPeter Hutterer <peter@cs.unisa.edu.au>2008-06-12 11:24:04 +0930
commit998f52010f92dc79f2ace6048a2f3fd600a97582 (patch)
tree4822cdec0405c9af16849dabba09afcdfab96444
parentde07c04f5c2874b8e407913c3121e715e46653d2 (diff)
downloadxorg-driver-xf86-input-evdev-998f52010f92dc79f2ace6048a2f3fd600a97582.tar.gz
Finalize MB emulation if EvdevProbe fails.
This avoids segfaults when HAL is restarted behind our backs. Also, only init MB emulation when the device actually has a button.
-rw-r--r--src/evdev.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/evdev.c b/src/evdev.c
index 4d20b76..65b7185 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -941,6 +941,7 @@ EvdevProbe(InputInfoPtr pInfo)
if (TestBit(BTN_LEFT, key_bitmask)) {
xf86Msg(X_INFO, "%s: Found mouse buttons\n", pInfo->name);
+ EvdevMBEmuPreInit(pInfo);
pEvdev->flags |= EVDEV_BUTTON_EVENTS;
has_buttons = TRUE;
}
@@ -1025,8 +1026,6 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
*/
pEvdev->tool = 1;
- EvdevMBEmuPreInit(pInfo);
-
device = xf86CheckStrOption(dev->commonOptions, "Path", NULL);
if (!device)
device = xf86CheckStrOption(dev->commonOptions, "Device", NULL);
@@ -1052,6 +1051,7 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
/* parse the XKB options during kbd setup */
if (EvdevProbe(pInfo)) {
+ EvdevMBEmuFinalize(pInfo);
xf86DeleteInput(pInfo, 0);
return NULL;
}