diff options
author | Volker RĂ¼melin <vr_qemu@t-online.de> | 2021-07-25 18:50:39 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2021-07-26 10:24:49 +0200 |
commit | 584af1f1d955476aacba3350c4efb5865fc91c09 (patch) | |
tree | 95ac7c0950da70581d82791227d5aac0d2ade6ac /include | |
parent | d4a121048095f276913dca977bb21bcbab02c44c (diff) |
ui/gtk: add a keyboard fifo to the VTE consoles
Since commit 8eb13bbbac ("ui/gtk: vte: fix sending multiple
characeters") it's very easy to lock up QEMU with the GTK ui.
If you configure a guest with a serial device and the guest
doesn't listen on this device, QEMU will lock up after
entering two characters in the serial console. That's because
current code uses a busy loop for the chardev write retries
and the busy loop doesn't terminate in this case.
To fix this problem add a fifo to the VTE consoles and use the
chr_accept_input() callback function to write the remaining
characters in the queue to the chardev.
The fifo has a size of 4096 bytes, so one can copy and paste
a fairly large URL or file path.
Fixes: 8eb13bbbac ("ui/gtk: vte: fix sending multiple characeters")
Signed-off-by: Volker RĂ¼melin <vr_qemu@t-online.de>
Message-Id: <20210725165039.5242-1-vr_qemu@t-online.de>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/ui/gtk.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/ui/gtk.h b/include/ui/gtk.h index 9516670ebc..80d6bbd9b5 100644 --- a/include/ui/gtk.h +++ b/include/ui/gtk.h @@ -25,6 +25,9 @@ #include "ui/egl-helpers.h" #include "ui/egl-context.h" #endif +#ifdef CONFIG_VTE +#include "qemu/fifo8.h" +#endif #define MAX_VCS 10 @@ -62,6 +65,7 @@ typedef struct VirtualVteConsole { GtkWidget *scrollbar; GtkWidget *terminal; Chardev *chr; + Fifo8 out_fifo; bool echo; } VirtualVteConsole; #endif |