aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmos Kong <akong@redhat.com>2013-04-16 13:47:32 +0800
committerLuiz Capitulino <lcapitulino@redhat.com>2013-04-19 08:32:44 -0400
commit153d02e338a063ad5c51ff0725d5d88285f44121 (patch)
treeedee4728e063520e7562483a6e324087d5e38a50
parent09dada400328d75daf79e3eca1e48e024fec148d (diff)
monitor: fix the wrong order of releasing keys
(qemu) sendkey ctrl_r-scroll_lock-scroll_lock Executing this command could not let Windows guest panic, it caused by the wrong order of releasing keys. This problem was introduced by commit e4c8f004c55d9da3eae3e14df740238bf805b5d6. The right release order should be starting from last item. Signed-off-by: Amos Kong <akong@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
-rw-r--r--ui/input.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/ui/input.c b/ui/input.c
index 9abef0cd78..ecfeb43824 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -234,13 +234,11 @@ static void free_keycodes(void)
static void release_keys(void *opaque)
{
- int i;
-
- for (i = 0; i < keycodes_size; i++) {
- if (keycodes[i] & 0x80) {
+ while (keycodes_size > 0) {
+ if (keycodes[--keycodes_size] & 0x80) {
kbd_put_keycode(0xe0);
}
- kbd_put_keycode(keycodes[i]| 0x80);
+ kbd_put_keycode(keycodes[keycodes_size] | 0x80);
}
free_keycodes();