ui/gtk: add a keyboard fifo to the VTE consoles
commit584af1f1d955476aacba3350c4efb5865fc91c09
authorVolker Rümelin <vr_qemu@t-online.de>
Sun, 25 Jul 2021 16:50:39 +0000 (25 18:50 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Mon, 26 Jul 2021 08:24:49 +0000 (26 10:24 +0200)
tree95ac7c0950da70581d82791227d5aac0d2ade6ac
parentd4a121048095f276913dca977bb21bcbab02c44c
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>
include/ui/gtk.h
ui/gtk.c