diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/evdev.c | 7 | ||||
-rw-r--r-- | src/evdev.h | 1 | ||||
-rw-r--r-- | src/evdev_axes.c | 10 | ||||
-rw-r--r-- | src/evdev_brain.c | 18 | ||||
-rw-r--r-- | src/evdev_key.c | 7 |
5 files changed, 39 insertions, 4 deletions
diff --git a/src/evdev.c b/src/evdev.c index 1ea74c0..1bcaef8 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -214,6 +214,9 @@ EvdevProc(DeviceIntPtr device, int what) EvdevKeyOff (device); } + if (what == DEVICE_CLOSE) + evdevRemoveDevice(pEvdev); + device->public.on = FALSE; break; } @@ -238,10 +241,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; } @@ -268,7 +273,9 @@ EvdevNew(evdevDriverPtr driver, evdevDevicePtr device) pInfo->device_control = EvdevProc; pInfo->read_input = EvdevReadInput; pInfo->switch_mode = EvdevSwitchMode; +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 pInfo->motion_history_proc = xf86GetMotionEvents; +#endif pInfo->conf_idev = driver->dev; pInfo->private = device; diff --git a/src/evdev.h b/src/evdev.h index db0d287..ac4c364 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -252,6 +252,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 6879ab1..9d2ef20 100644 --- a/src/evdev_axes.c +++ b/src/evdev_axes.c @@ -672,8 +672,14 @@ EvdevAxesInit (DeviceIntPtr device) return Success; if (!InitValuatorClassDeviceStruct(device, axes, +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 1 + GetMotionHistory, + GetMotionHistorySize(), +#else miPointerGetMotionEvents, - miPointerGetMotionBufferSize(), 0)) + miPointerGetMotionBufferSize(), +#endif + 0)) return !Success; for (i = 0; i < axes; i++) { @@ -684,7 +690,9 @@ EvdevAxesInit (DeviceIntPtr device) if (!InitPtrFeedbackClassDeviceStruct(device, EvdevPtrCtrlProc)) return !Success; +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 xf86MotionHistoryAllocate (pInfo); +#endif return Success; } diff --git a/src/evdev_brain.c b/src/evdev_brain.c index 6365577..7e65935 100644 --- a/src/evdev_brain.c +++ b/src/evdev_brain.c @@ -462,6 +462,24 @@ 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; + xf86DeleteInput(pEvdev->pInfo, 0); + pEvdev->next = NULL; + return; + } + } + } +} + Bool evdevGetBits (int fd, evdevBitsPtr bits) { diff --git a/src/evdev_key.c b/src/evdev_key.c index 8917c3b..f840d1a 100644 --- a/src/evdev_key.c +++ b/src/evdev_key.c @@ -238,10 +238,11 @@ static KeySym map[] = { * So use the system bell for now. */ static void -EvdevKbdBell (int percent, DeviceIntPtr device, pointer ctrl, int unused) +EvdevKbdBell (int percent, DeviceIntPtr device, pointer arg, int unused) { - xf86SoundKbdBell(percent, ((KeybdCtrl*) ctrl)->bell_pitch, - ((KeybdCtrl*) ctrl)->bell_duration); + KeybdCtrl *ctrl = arg; + + xf86OSRingBell(percent, ctrl->bell_pitch, ctrl->bell_duration); } static void |