summary refs log tree commit diff stats
path: root/ui/console.c
diff options
context:
space:
mode:
authorAkihiko Odaki <akihiko.odaki@daynix.com>2024-03-19 12:08:40 +0900
committerMarc-André Lureau <marcandre.lureau@redhat.com>2024-03-20 10:27:54 +0400
commitd4c199566f6fa5de4afa344712462cfd322de9d0 (patch)
treead3c22a1aedc08ddfbd901f2b01e90d215b39855 /ui/console.c
parent271a197425528f4448b3d351be25995abe901374 (diff)
downloadfocaccia-qemu-d4c199566f6fa5de4afa344712462cfd322de9d0.tar.gz
focaccia-qemu-d4c199566f6fa5de4afa344712462cfd322de9d0.zip
ui/vnc: Do not use console_select()
console_select() is shared by other displays and a console_select() call
from one of them triggers console switching also in ui/curses,
circumventing key state reinitialization that needs to be performed in
preparation and resulting in stuck keys.

Use its internal state to track the current active console to prevent
such a surprise console switch.

Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20240319-console-v2-2-3fd6feef321a@daynix.com>
Diffstat (limited to 'ui/console.c')
-rw-r--r--ui/console.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ui/console.c b/ui/console.c
index 832055675c..fbc1b9b8b5 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -1325,6 +1325,18 @@ void graphic_console_close(QemuConsole *con)
     dpy_gfx_replace_surface(con, surface);
 }
 
+QemuConsole *qemu_console_lookup_default(void)
+{
+    QemuConsole *con;
+
+    QTAILQ_FOREACH(con, &consoles, next) {
+        if (QEMU_IS_GRAPHIC_CONSOLE(con)) {
+            return con;
+        }
+    }
+    return QTAILQ_FIRST(&consoles);
+}
+
 QemuConsole *qemu_console_lookup_by_index(unsigned int index)
 {
     QemuConsole *con;