summaryrefslogtreecommitdiffstats
path: root/ui/input-legacy.c
diff options
context:
space:
mode:
authorPeter Maydell2014-10-02 16:01:48 +0200
committerPeter Maydell2014-10-02 16:01:48 +0200
commitb00a0ddb31a393b8386d30a9bef4d9bbb249e7ec (patch)
treee08da05998e93519c178cdfe5ae01b319c0be14d /ui/input-legacy.c
parentMerge remote-tracking branch 'remotes/kraxel/tags/pull-console-20141002-1' in... (diff)
parentadd input-send-event command (diff)
downloadqemu-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.c11
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,