summary refs log tree commit diff stats
path: root/ui/sdl.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2018-02-02 18:54:11 +0000
committerPeter Maydell <peter.maydell@linaro.org>2018-02-02 18:54:11 +0000
commitf24ee107a07f093bd7ed475dd48d7ba57ea3d8fe (patch)
tree07eb050833142a5d154dd4820ff5b63227643434 /ui/sdl.c
parentfb2516ef94b8399ddded4a41c4346cbc1d5d98fc (diff)
parent627ebec208a8809818589e17f4fce55a59420ad2 (diff)
downloadfocaccia-qemu-f24ee107a07f093bd7ed475dd48d7ba57ea3d8fe.tar.gz
focaccia-qemu-f24ee107a07f093bd7ed475dd48d7ba57ea3d8fe.zip
Merge remote-tracking branch 'remotes/kraxel/tags/ui-20180202-pull-request' into staging
ui: use QIONetListener in vnc, bugfixes for sdl1 and vnc.

# gpg: Signature made Fri 02 Feb 2018 07:17:36 GMT
# gpg:                using RSA key 4CB6D8EED3E87138
# 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>"
# Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138

* remotes/kraxel/tags/ui-20180202-pull-request:
  ui: correctly advance output buffer when writing SASL data
  ui: convert VNC server to QIONetListener
  ui: fix mixup between qnum and qcode in SDL1 key handling

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'ui/sdl.c')
-rw-r--r--ui/sdl.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/ui/sdl.c b/ui/sdl.c
index c8f102bb9f..a6bff301eb 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -242,6 +242,7 @@ static const guint16 *sdl_get_keymap(size_t *maplen)
 
 static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
 {
+    int qcode;
     if (!keycode_map) {
         return 0;
     }
@@ -249,7 +250,13 @@ static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
         return 0;
     }
 
-    return keycode_map[ev->keysym.scancode];
+    qcode = keycode_map[ev->keysym.scancode];
+
+    if (qcode > qemu_input_map_qcode_to_qnum_len) {
+        return 0;
+    }
+
+    return qemu_input_map_qcode_to_qnum[qcode];
 }
 
 static void reset_keys(void)