diff options
| author | Peter Maydell | 2014-10-02 16:01:48 +0200 |
|---|---|---|
| committer | Peter Maydell | 2014-10-02 16:01:48 +0200 |
| commit | b00a0ddb31a393b8386d30a9bef4d9bbb249e7ec (patch) | |
| tree | e08da05998e93519c178cdfe5ae01b319c0be14d /ui/input-legacy.c | |
| parent | Merge remote-tracking branch 'remotes/kraxel/tags/pull-console-20141002-1' in... (diff) | |
| parent | add input-send-event command (diff) | |
| download | qemu-b00a0ddb31a393b8386d30a9bef4d9bbb249e7ec.tar.gz qemu-b00a0ddb31a393b8386d30a9bef4d9bbb249e7ec.tar.xz qemu-b00a0ddb31a393b8386d30a9bef4d9bbb249e7ec.zip | |
Merge remote-tracking branch 'remotes/kraxel/tags/pull-input-20141002-1' into staging
input monitor patches: fix send-key release ordering
and new input-send-event command
# gpg: Signature made Thu 02 Oct 2014 09:10:44 BST using RSA key ID D3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>"
# gpg: aka "Gerd Hoffmann <gerd@kraxel.org>"
# gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>"
* remotes/kraxel/tags/pull-input-20141002-1:
add input-send-event command
input: fix send-key monitor command release event ordering
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'ui/input-legacy.c')
| -rw-r--r-- | ui/input-legacy.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/ui/input-legacy.c b/ui/input-legacy.c index 3025f50f49..a698a342bc 100644 --- a/ui/input-legacy.c +++ b/ui/input-legacy.c @@ -85,6 +85,8 @@ void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_time, Error **errp) { KeyValueList *p; + KeyValue **up = NULL; + int count = 0; if (!has_hold_time) { hold_time = 0; /* use default */ @@ -93,11 +95,16 @@ void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_time, for (p = keys; p != NULL; p = p->next) { qemu_input_event_send_key(NULL, copy_key_value(p->value), true); qemu_input_event_send_key_delay(hold_time); + up = g_realloc(up, sizeof(*up) * (count+1)); + up[count] = copy_key_value(p->value); + count++; } - for (p = keys; p != NULL; p = p->next) { - qemu_input_event_send_key(NULL, copy_key_value(p->value), false); + while (count) { + count--; + qemu_input_event_send_key(NULL, up[count], false); qemu_input_event_send_key_delay(hold_time); } + g_free(up); } static void legacy_kbd_event(DeviceState *dev, QemuConsole *src, |
