diff options
author | Peter Hutterer <peter@cs.unisa.edu.au> | 2008-06-12 11:23:10 +0930 |
---|---|---|
committer | Peter Hutterer <peter@cs.unisa.edu.au> | 2008-06-12 11:24:04 +0930 |
commit | 998f52010f92dc79f2ace6048a2f3fd600a97582 (patch) | |
tree | 4822cdec0405c9af16849dabba09afcdfab96444 | |
parent | de07c04f5c2874b8e407913c3121e715e46653d2 (diff) |
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.c | 4 |
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; } |