On Fri, 2025-09-12 at 05:39 +0200, Filip Hejsek wrote:
> From: Szymon Lukasz <[email protected]>
>
> This function should be called whenever we learn about a new size of
> the terminal connected to a chardev.
>
> Signed-off-by: Szymon Lukasz <[email protected]>
> Signed-off-by: Filip Hejsek <[email protected]>
> ---
> chardev/char.c | 11 +++++++++++
> include/chardev/char.h | 2 ++
> 2 files changed, 13 insertions(+)
>
> diff --git a/chardev/char.c b/chardev/char.c
> index
> 635d19fea4fd4bd0c7f171f055fe940f9f5ebed5..b45d79cb9b57643827eb7479257
> fdda2cf6b0434 100644
> --- a/chardev/char.c
> +++ b/chardev/char.c
> @@ -351,6 +351,17 @@ int qemu_chr_wait_connected(Chardev *chr, Error
> **errp)
> return 0;
> }
>
> +void qemu_chr_resize(Chardev *chr, uint16_t cols, uint16_t rows)
> +{
> + if (cols != chr->cols || rows != chr->rows) {
Perhaps it would be better to discard resize events if the requested
cols or rows is 0 as it indicates that an error has occurred at some
point during the process of receiving the winsize.
> + chr->cols = cols;
> + chr->rows = rows;
> + if (chr->be_open) {
> + qemu_chr_be_event(chr, CHR_EVENT_RESIZE);
> + }
> + }
> +}
> +
> QemuOpts *qemu_chr_parse_compat(const char *label, const char
> *filename,
> bool permit_mux_mon)
> {
> diff --git a/include/chardev/char.h b/include/chardev/char.h
> index
> 45cb6349756ac8072dffab9354108caf90cd3565..1e69b038241074d627ebb7f096e
> 98aee9953ebdf 100644
> --- a/include/chardev/char.h
> +++ b/include/chardev/char.h
> @@ -232,6 +232,8 @@ int qemu_chr_write(Chardev *s, const uint8_t
> *buf, int len, bool write_all);
> #define qemu_chr_write_all(s, buf, len) qemu_chr_write(s, buf, len,
> true)
> int qemu_chr_wait_connected(Chardev *chr, Error **errp);
>
> +void qemu_chr_resize(Chardev *chr, uint16_t cols, uint16_t rows);
> +
> #define TYPE_CHARDEV "chardev"
> OBJECT_DECLARE_TYPE(Chardev, ChardevClass, CHARDEV)
>
>