diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/evdev.c | 8 | ||||
-rw-r--r-- | src/evdev.h | 1 | ||||
-rw-r--r-- | src/evdev_axes.c | 5 | ||||
-rw-r--r-- | src/evdev_brain.c | 17 |
4 files changed, 26 insertions, 5 deletions
diff --git a/src/evdev.c b/src/evdev.c index 2d8d120..ba8f862 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -210,6 +210,9 @@ EvdevProc(DeviceIntPtr device, int what) EvdevKeyOff (device); } + if (what == DEVICE_CLOSE) + evdevRemoveDevice(pEvdev); + device->public.on = FALSE; break; } @@ -234,10 +237,12 @@ EvdevSwitchMode (ClientPtr client, DeviceIntPtr device, int mode) else return !Success; break; +#if 0 case SendCoreEvents: case DontSendCoreEvents: xf86XInputSetSendCoreEvents (pInfo, (mode == SendCoreEvents)); break; +#endif default: return !Success; } @@ -455,8 +460,6 @@ _X_EXPORT InputDriverRec EVDEV = { 0 }; -#ifdef XFree86LOADER - static void EvdevUnplug(pointer p) { @@ -492,4 +495,3 @@ _X_EXPORT XF86ModuleData evdevModuleData = EvdevPlug, EvdevUnplug }; -#endif /* XFree86LOADER */ diff --git a/src/evdev.h b/src/evdev.h index db33546..97f02bf 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -246,6 +246,7 @@ int evdevGetFDForDevice (evdevDevicePtr driver); Bool evdevStart (InputDriverPtr drv); Bool evdevNewDriver (evdevDriverPtr driver); Bool evdevGetBits (int fd, evdevBitsPtr bits); +void evdevRemoveDevice (evdevDevicePtr device); int EvdevBtnInit (DeviceIntPtr device); int EvdevBtnOn (DeviceIntPtr device); diff --git a/src/evdev_axes.c b/src/evdev_axes.c index df6eb4b..81dd772 100644 --- a/src/evdev_axes.c +++ b/src/evdev_axes.c @@ -633,11 +633,12 @@ EvdevAxesInit (DeviceIntPtr device) if (!InitValuatorClassDeviceStruct(device, axes, miPointerGetMotionEvents, - miPointerGetMotionBufferSize(), 0)) + miPointerGetMotionBufferSize(), 0, + axes)) return !Success; for (i = 0; i < axes; i++) { - xf86InitValuatorAxisStruct(device, i, 0, 0, 0, 0, 1); + xf86InitValuatorAxisStruct(device, i, 0, -1, 0, 0, 1); xf86InitValuatorDefaults(device, i); } diff --git a/src/evdev_brain.c b/src/evdev_brain.c index 6365577..246666f 100644 --- a/src/evdev_brain.c +++ b/src/evdev_brain.c @@ -462,6 +462,23 @@ evdevNewDriver (evdevDriverPtr driver) return TRUE; } +void +evdevRemoveDevice (evdevDevicePtr pEvdev) +{ + evdevDriverPtr driver; + evdevDevicePtr *device; + + for (driver = evdev_drivers; driver; driver = driver->next) { + for (device = &driver->devices; *device; device = &(*device)->next) { + if (*device == pEvdev) { + *device = pEvdev->next; + pEvdev->next = NULL; + return; + } + } + } +} + Bool evdevGetBits (int fd, evdevBitsPtr bits) { |