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)
>  
> 


Reply via email to