From 6dc41991557fa55a9e2f5aaf0fe40c70a08d41fd Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 15 Aug 2008 09:23:02 +0930 Subject: Revert "Don't grab devices unless specified through the config options." Not such a good idea, CTRL+C terminates the server and other issues. Reverting for now until a better solution is found, at least this way the driver is usable. See also: http://lists.freedesktop.org/archives/xorg/2008-August/038032.html This reverts commit e8534d47c8524ac081c2e3e6ebaabe4c6b274a18. --- src/evdev.c | 35 ++++++++++++++--------------------- src/evdev.h | 2 +- 2 files changed, 15 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/evdev.c b/src/evdev.c index b2a79a2..38a211b 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -942,24 +942,23 @@ EvdevProc(DeviceIntPtr device, int what) return EvdevInit(device); case DEVICE_ON: - if (pEvdev->grabDevice && ioctl(pInfo->fd, EVIOCGRAB, (void *)1)) - { + if (!pEvdev->kernel24 && ioctl(pInfo->fd, EVIOCGRAB, (void *)1)) xf86Msg(X_WARNING, "%s: Grab failed (%s)\n", pInfo->name, strerror(errno)); - if (errno == ENODEV) - return !Success; - } - xf86AddEnabledDevice(pInfo); - if (pEvdev->flags & EVDEV_BUTTON_EVENTS) + if (errno != ENODEV) { - EvdevMBEmuPreInit(pInfo); - EvdevWheelEmuPreInit(pInfo); + xf86AddEnabledDevice(pInfo); + if (pEvdev->flags & EVDEV_BUTTON_EVENTS) + { + EvdevMBEmuPreInit(pInfo); + EvdevWheelEmuPreInit(pInfo); + } + device->public.on = TRUE; } - device->public.on = TRUE; break; case DEVICE_OFF: - if (pEvdev->grabDevice && ioctl(pInfo->fd, EVIOCGRAB, (void *)0)) + if (!pEvdev->kernel24 && ioctl(pInfo->fd, EVIOCGRAB, (void *)0)) xf86Msg(X_WARNING, "%s: Release failed (%s)\n", pInfo->name, strerror(errno)); xf86RemoveEnabledDevice(pInfo); @@ -983,19 +982,17 @@ EvdevProbe(InputInfoPtr pInfo) long rel_bitmask[NBITS(REL_MAX)]; long abs_bitmask[NBITS(ABS_MAX)]; int i, has_axes, has_keys, num_buttons; - int kernel24 = 0; EvdevPtr pEvdev = pInfo->private; - if (pEvdev->grabDevice && ioctl(pInfo->fd, EVIOCGRAB, (void *)1)) { + if (ioctl(pInfo->fd, EVIOCGRAB, (void *)1)) { if (errno == EINVAL) { /* keyboards are unsafe in 2.4 */ - kernel24 = 1; - pEvdev->grabDevice = 0; + pEvdev->kernel24 = 1; } else { xf86Msg(X_ERROR, "Grab failed. Device already configured?\n"); return 1; } - } else if (pEvdev->grabDevice) { + } else { ioctl(pInfo->fd, EVIOCGRAB, (void *)0); } @@ -1071,7 +1068,7 @@ EvdevProbe(InputInfoPtr pInfo) } if (has_keys) { - if (kernel24) { + if (pEvdev->kernel24) { xf86Msg(X_INFO, "%s: Kernel < 2.6 is too old, ignoring keyboard\n", pInfo->name); } else { @@ -1155,10 +1152,6 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int flags) return NULL; } - /* Grabbing the event device stops in-kernel event forwarding. In other - words, it disables rfkill and the "Macintosh mouse button emulation". */ - pEvdev->grabDevice = xf86CheckBoolOption(dev->commonOptions, "GrabDevice", 0); - EvdevInitButtonMapping(pInfo); pEvdev->noXkb = noXkbExtension; diff --git a/src/evdev.h b/src/evdev.h index a43ddbe..a0a336a 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -50,7 +50,7 @@ typedef struct { } WheelAxis, *WheelAxisPtr; typedef struct { - int grabDevice; /* grab the event device? */ + int kernel24; int screen; int min_x, min_y, max_x, max_y; int abs_x, abs_y, old_x, old_y; -- cgit v1.2.3