From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60345) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XXQD6-0001ox-AQ for qemu-devel@nongnu.org; Fri, 26 Sep 2014 03:45:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XXQCy-00051J-QJ for qemu-devel@nongnu.org; Fri, 26 Sep 2014 03:45:00 -0400 Received: from mx1.redhat.com ([209.132.183.28]:23228) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XXQCy-00050s-JG for qemu-devel@nongnu.org; Fri, 26 Sep 2014 03:44:52 -0400 From: Amos Kong Date: Fri, 26 Sep 2014 15:44:40 +0800 Message-Id: <1411717480-31299-1-git-send-email-akong@redhat.com> Subject: [Qemu-devel] [PATCH] ui/input: correct the release order of combined keys List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kraxel@redhat.com, aliguori@amazon.com, lcapitulino@redhat.com Commit 2e377f17 wrongly overturned the release order of combined keys, it caused some Windows guests can't be paniced by "virsh send-key KEY_RIGHTCTRL KEY_SCROLLLOCK KEY_SCROLLLOCK" The press event order should be different with release order. Signed-off-by: Amos Kong --- ui/input-legacy.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ui/input-legacy.c b/ui/input-legacy.c index 3025f50..1e1f14c 100644 --- a/ui/input-legacy.c +++ b/ui/input-legacy.c @@ -85,16 +85,23 @@ void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_time, Error **errp) { KeyValueList *p; + int count, i; if (!has_hold_time) { hold_time = 0; /* use default */ } + count = 0; 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); + count++; } - for (p = keys; p != NULL; p = p->next) { + while (count--) { + i = 0; + for (p = keys; p != NULL && i < count; p = p->next) { + i++; + } qemu_input_event_send_key(NULL, copy_key_value(p->value), false); qemu_input_event_send_key_delay(hold_time); } -- 1.9.3