aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/evdev.c8
-rw-r--r--src/evdev.h1
-rw-r--r--src/evdev_brain.c18
-rw-r--r--src/evdev_key.c3
4 files changed, 27 insertions, 3 deletions
diff --git a/src/evdev.c b/src/evdev.c
index fd02f75..f2d61f6 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;
}
@@ -459,8 +464,6 @@ _X_EXPORT InputDriverRec EVDEV = {
0
};
-#ifdef XFree86LOADER
-
static void
EvdevUnplug(pointer p)
{
@@ -496,4 +499,3 @@ _X_EXPORT XF86ModuleData evdevModuleData =
EvdevPlug,
EvdevUnplug
};
-#endif /* XFree86LOADER */
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_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..577ae73 100644
--- a/src/evdev_key.c
+++ b/src/evdev_key.c
@@ -240,8 +240,11 @@ static KeySym map[] = {
static void
EvdevKbdBell (int percent, DeviceIntPtr device, pointer ctrl, int unused)
{
+/* OS keyboard layer has been removed. */
+#if 0
xf86SoundKbdBell(percent, ((KeybdCtrl*) ctrl)->bell_pitch,
((KeybdCtrl*) ctrl)->bell_duration);
+#endif
}
static void