diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2014-06-05 18:58:53 +0100 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2014-06-05 18:58:53 +0100 |
| commit | d4f005db9b90b3df6945c709867ab62d8b772a94 (patch) | |
| tree | e5f06c2aad22541eb06b57cf5494f1f362fe47c4 /ui/input-legacy.c | |
| parent | e00fcfeab3d452cba3d0a08991a39ab15df66424 (diff) | |
| parent | 2082bac151f9ed17f4425a3dbe994ed0b7958c89 (diff) | |
| download | focaccia-qemu-d4f005db9b90b3df6945c709867ab62d8b772a94.tar.gz focaccia-qemu-d4f005db9b90b3df6945c709867ab62d8b772a94.zip | |
Merge remote-tracking branch 'remotes/kraxel/tags/pull-input-10' into staging
updates for docs/multiseat.txt input: add support for kbd delays # gpg: Signature made Wed 04 Jun 2014 08:22:39 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-10: docs/multiseat.txt: add note about spice docs/multiseat.txt: gtk joined the party docs/multiseat.txt: use autoseat input/vnc: use kbd delays in press_key input/curses: add kbd delay between keydown and keyup events input: use kbd delays for send_key monitor command input: add support for kbd delays Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'ui/input-legacy.c')
| -rw-r--r-- | ui/input-legacy.c | 45 |
1 files changed, 6 insertions, 39 deletions
diff --git a/ui/input-legacy.c b/ui/input-legacy.c index 2a538607a2..3025f50f49 100644 --- a/ui/input-legacy.c +++ b/ui/input-legacy.c @@ -74,27 +74,6 @@ int index_from_key(const char *key) return i; } -static KeyValue **keyvalues; -static int keyvalues_size; -static QEMUTimer *key_timer; - -static void free_keyvalues(void) -{ - g_free(keyvalues); - keyvalues = NULL; - keyvalues_size = 0; -} - -static void release_keys(void *opaque) -{ - while (keyvalues_size > 0) { - qemu_input_event_send_key(NULL, keyvalues[--keyvalues_size], - false); - } - - free_keyvalues(); -} - static KeyValue *copy_key_value(KeyValue *src) { KeyValue *dst = g_new(KeyValue, 1); @@ -107,30 +86,18 @@ void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_time, { KeyValueList *p; - if (!key_timer) { - key_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, release_keys, NULL); - } - - if (keyvalues != NULL) { - timer_del(key_timer); - release_keys(NULL); - } - if (!has_hold_time) { - hold_time = 100; + hold_time = 0; /* use default */ } for (p = keys; p != NULL; p = p->next) { qemu_input_event_send_key(NULL, copy_key_value(p->value), true); - - keyvalues = g_realloc(keyvalues, sizeof(KeyValue *) * - (keyvalues_size + 1)); - keyvalues[keyvalues_size++] = copy_key_value(p->value); + qemu_input_event_send_key_delay(hold_time); + } + for (p = keys; p != NULL; p = p->next) { + qemu_input_event_send_key(NULL, copy_key_value(p->value), false); + qemu_input_event_send_key_delay(hold_time); } - - /* delayed key up events */ - timer_mod(key_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + - muldiv64(get_ticks_per_sec(), hold_time, 1000)); } static void legacy_kbd_event(DeviceState *dev, QemuConsole *src, |