From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52999) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ws5s7-00073J-NS for qemu-devel@nongnu.org; Wed, 04 Jun 2014 03:44:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ws5rx-0002El-6t for qemu-devel@nongnu.org; Wed, 04 Jun 2014 03:44:31 -0400 Received: from mx1.redhat.com ([209.132.183.28]:30731) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ws5rw-0002Cc-Sr for qemu-devel@nongnu.org; Wed, 04 Jun 2014 03:44:21 -0400 From: Gerd Hoffmann Date: Wed, 4 Jun 2014 09:44:06 +0200 Message-Id: <1401867851-30064-3-git-send-email-kraxel@redhat.com> In-Reply-To: <1401867851-30064-1-git-send-email-kraxel@redhat.com> References: <1401867851-30064-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PULL 2/7] input: use kbd delays for send_key monitor command List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann , Anthony Liguori Signed-off-by: Gerd Hoffmann --- ui/input-legacy.c | 45 ++++++--------------------------------------- 1 file changed, 6 insertions(+), 39 deletions(-) diff --git a/ui/input-legacy.c b/ui/input-legacy.c index 2a53860..3025f50 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, -- 1.8.3.1