uterm: input: fix resetting key-repeat timer during key-press
We currently do not reset the key-repeat-delay when key-presses are changed fast enough to fall into the repeat-rate range. Therefore, we might get spurios key-repeats, even though the key itself wasn't held for repeat-delay milliseconds. Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
parent
3254848124
commit
94f11b18b9
@ -214,10 +214,11 @@ static void uxkb_dev_repeat(struct uterm_input_dev *dev, unsigned int state)
|
||||
const uint32_t *keysyms;
|
||||
struct itimerspec spec;
|
||||
|
||||
if (state == KEY_RELEASED &&
|
||||
dev->repeat_event.keycode == dev->event.keycode) {
|
||||
dev->repeating = false;
|
||||
ev_timer_update(dev->repeat_timer, NULL);
|
||||
if (dev->repeating && dev->repeat_event.keycode == dev->event.keycode) {
|
||||
if (state == KEY_RELEASED) {
|
||||
dev->repeating = false;
|
||||
ev_timer_update(dev->repeat_timer, NULL);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -246,13 +247,12 @@ static void uxkb_dev_repeat(struct uterm_input_dev *dev, unsigned int state)
|
||||
num_keysyms, keysyms);
|
||||
if (ret)
|
||||
return;
|
||||
|
||||
return;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
if (dev->repeating)
|
||||
return;
|
||||
|
||||
dev->repeating = true;
|
||||
spec.it_interval.tv_sec = 0;
|
||||
spec.it_interval.tv_nsec = dev->input->repeat_rate * 1000000;
|
||||
|
Loading…
x
Reference in New Issue
Block a user