aboutsummaryrefslogtreecommitdiff
path: root/drivers/input/input.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-04-13 11:37:23 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2009-04-13 11:37:23 -0700
commitb534d388c268ad051c72b187106a3c99021be006 (patch)
treeccfe40792b52366ce237c2043256d28916a0122e /drivers/input/input.c
parentc751085943362143f84346d274e0011419c84202 (diff)
parentba28f22e7cf16cb310bb491cbb3f7d0d5d1f5c5d (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (22 commits) Input: i8042 - add HP DV9700 to the noloop list Input: arrange drivers/input/misc/Makefile in alphabetical order Input: add AD7879 Touchscreen driver Input: add AD7877 touchscreen driver Input: bf54x-keys - fix typo in warning Input: add driver for S1 button of rb532 Input: generic driver for rotary encoders on GPIOs Input: hilkbd - fix crash when removing hilkbd module Input: atkbd - add quirk for Fujitsu Siemens Amilo PA 1510 Input: atkbd - consolidate force release quirk setup Input: add accelerated touchscreen support for Marvell Zylonite Input: ucb1400_ts, mainstone-wm97xx - add BTN_TOUCH events Input: wm97xx - use disable_irq_nosync() for Mainstone Input: wm97xx - add BTN_TOUCH event to wm97xx to use it with Android Input: fix polling of /proc/bus/input/devices Input: psmouse - add newline to OLPC HGPK touchpad debugging Input: ati_remote2 - check module params Input: ati_remote2 - add per device attrs Input: ati_remote2 - complete suspend support Input: stop autorepeat timer on key release ...
Diffstat (limited to 'drivers/input/input.c')
-rw-r--r--drivers/input/input.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c
index ec3db3ade11..d44065d2e66 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -132,6 +132,11 @@ static void input_start_autorepeat(struct input_dev *dev, int code)
}
}
+static void input_stop_autorepeat(struct input_dev *dev)
+{
+ del_timer(&dev->timer);
+}
+
#define INPUT_IGNORE_EVENT 0
#define INPUT_PASS_TO_HANDLERS 1
#define INPUT_PASS_TO_DEVICE 2
@@ -167,6 +172,8 @@ static void input_handle_event(struct input_dev *dev,
__change_bit(code, dev->key);
if (value)
input_start_autorepeat(dev, code);
+ else
+ input_stop_autorepeat(dev);
}
disposition = INPUT_PASS_TO_HANDLERS;
@@ -737,11 +744,11 @@ static inline void input_wakeup_procfs_readers(void)
static unsigned int input_proc_devices_poll(struct file *file, poll_table *wait)
{
- int state = input_devices_state;
-
poll_wait(file, &input_devices_poll_wait, wait);
- if (state != input_devices_state)
+ if (file->f_version != input_devices_state) {
+ file->f_version = input_devices_state;
return POLLIN | POLLRDNORM;
+ }
return 0;
}