mirror of
https://github.com/mpv-player/mpv
synced 2024-12-22 14:52:43 +00:00
input: fix problem with key autorepeat
Recent commit 82b8f89bae
("input: rework event reading and command
queuing") had a problem in the handling of commands generated by
autorepeat code (this code is only used with joystick and Apple IR
remote input). Fix (still untested though).
This commit is contained in:
parent
a4f4130819
commit
c2f5465bcc
@ -1487,25 +1487,24 @@ mp_cmd_t *mp_input_get_cmd(struct input_ctx *ictx, int time, int peek_only)
|
|||||||
if (!queue->num_cmds)
|
if (!queue->num_cmds)
|
||||||
queue = &ictx->key_cmd_queue;
|
queue = &ictx->key_cmd_queue;
|
||||||
if (!queue->num_cmds) {
|
if (!queue->num_cmds) {
|
||||||
queue = NULL;
|
|
||||||
ret = check_autorepeat(ictx);
|
ret = check_autorepeat(ictx);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
queue_add(queue, ret, false);
|
||||||
} else
|
} else
|
||||||
ret = queue->first;
|
ret = queue->first;
|
||||||
|
|
||||||
for (struct cmd_filter *cf = cmd_filters; cf; cf = cf->next) {
|
for (struct cmd_filter *cf = cmd_filters; cf; cf = cf->next) {
|
||||||
if (cf->filter(ret, cf->ctx)) {
|
if (cf->filter(ret, cf->ctx)) {
|
||||||
// The filter ate the cmd, so remove it from the queue
|
// The filter ate the cmd, so remove it from the queue
|
||||||
if (queue)
|
queue_pop(queue);
|
||||||
queue_pop(queue);
|
|
||||||
mp_cmd_free(ret);
|
mp_cmd_free(ret);
|
||||||
// Retry with next command
|
// Retry with next command
|
||||||
return mp_input_get_cmd(ictx, 0, peek_only);
|
return mp_input_get_cmd(ictx, 0, peek_only);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!peek_only && queue)
|
if (!peek_only)
|
||||||
queue_pop(queue);
|
queue_pop(queue);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user