From 5ab17145708e6ad4582b0372fb3a171be3379293 Mon Sep 17 00:00:00 2001 From: Anshul Garg Date: Thu, 8 Jan 2015 13:41:24 -0800 Subject: [PATCH] Input: small tweak to autorepeat handling If a device does not support autorepeat or does not emit any key events we should not be scanning all events in a packet to decide if we should start or stop autorepeat function. Signed-off-by: Anshul Garg Signed-off-by: Dmitry Torokhov --- drivers/input/input.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/input/input.c b/drivers/input/input.c index 213e3a1..26199ab 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -152,12 +152,14 @@ static void input_pass_values(struct input_dev *dev, add_input_randomness(vals->type, vals->code, vals->value); /* trigger auto repeat for key events */ - for (v = vals; v != vals + count; v++) { - if (v->type == EV_KEY && v->value != 2) { - if (v->value) - input_start_autorepeat(dev, v->code); - else - input_stop_autorepeat(dev); + if (test_bit(EV_REP, dev->evbit) && test_bit(EV_KEY, dev->evbit)) { + for (v = vals; v != vals + count; v++) { + if (v->type == EV_KEY && v->value != 2) { + if (v->value) + input_start_autorepeat(dev, v->code); + else + input_stop_autorepeat(dev); + } } } } -- 2.7.4