aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stone <daniel@fooishbar.org>2006-11-02 03:42:14 +0200
committerDaniel Stone <daniels@endtroducing.fooishbar.org>2006-11-02 03:42:14 +0200
commit3fc70342aaba5f95d01b6e51164ae207532fa8f4 (patch)
treeebf1b6ac7725ecf7e2d2c616d53a92abda2660e5
parentMerge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/driver/xf86-i... (diff)
parentkey: use os bell-ringing function (diff)
downloadxf86-input-evdev-3fc70342aaba5f95d01b6e51164ae207532fa8f4.tar.gz
xf86-input-evdev-3fc70342aaba5f95d01b6e51164ae207532fa8f4.tar.bz2
xf86-input-evdev-3fc70342aaba5f95d01b6e51164ae207532fa8f4.zip
Merge branch 'input-hotplug'
-rw-r--r--src/evdev.c7
-rw-r--r--src/evdev.h1
-rw-r--r--src/evdev_axes.c10
-rw-r--r--src/evdev_brain.c18
-rw-r--r--src/evdev_key.c7
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