Input: stop autorepeat timer on key release
Whenever you press and then release a key, the CPU wakes up three times: * press * release * autorepeat timer exactly 250ms after press The autorepeat timer has nothing to do, obviously, since you already have released the key, so stop it on key release. [dtor@mail.ru: This changes autorepeat behavior a bit since we now stop autorepeat even if key that is being released is not the one that is being auto-repeated, but I believe the new behavior is better.] Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
Родитель
b0ee0d3eb3
Коммит
e7b5c1ef4d
|
@ -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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче