mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-14 08:59:05 +00:00
chardev/char-win-stdio: Pass Ctrl+C to guest with a multiplexed monitor
At present when pressing Ctrl+C from a guest running on QEMU Windows with a multiplexed monitor, e.g.: -serial mon:stdio, QEMU executable just exits. This behavior is inconsistent with the Linux version. Such behavior is caused by unconditionally setting the input mode ENABLE_PROCESSED_INPUT for a console's input buffer. Fix this by testing whether the chardev is allowed to do so. Signed-off-by: Bin Meng <bin.meng@windriver.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20221025141015.612291-1-bin.meng@windriver.com>
This commit is contained in:
parent
a082fab9d2
commit
06639f8ff5
@ -146,6 +146,8 @@ static void qemu_chr_open_stdio(Chardev *chr,
|
||||
bool *be_opened,
|
||||
Error **errp)
|
||||
{
|
||||
ChardevStdio *opts = backend->u.stdio.data;
|
||||
bool stdio_allow_signal = !opts->has_signal || opts->signal;
|
||||
WinStdioChardev *stdio = WIN_STDIO_CHARDEV(chr);
|
||||
DWORD dwMode;
|
||||
int is_console = 0;
|
||||
@ -193,7 +195,11 @@ static void qemu_chr_open_stdio(Chardev *chr,
|
||||
if (is_console) {
|
||||
/* set the terminal in raw mode */
|
||||
/* ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS */
|
||||
dwMode |= ENABLE_PROCESSED_INPUT;
|
||||
if (stdio_allow_signal) {
|
||||
dwMode |= ENABLE_PROCESSED_INPUT;
|
||||
} else {
|
||||
dwMode &= ~ENABLE_PROCESSED_INPUT;
|
||||
}
|
||||
}
|
||||
|
||||
SetConsoleMode(stdio->hStdIn, dwMode);
|
||||
|
Loading…
x
Reference in New Issue
Block a user