diff --git a/vnc.c b/vnc.c index a3a7840075..c8fe659a13 100644 --- a/vnc.c +++ b/vnc.c @@ -529,10 +529,12 @@ static void vnc_desktop_resize(VncState *vs) if (vs->csock == -1 || !vnc_has_feature(vs, VNC_FEATURE_RESIZE)) { return; } + vs->client_width = ds_get_width(ds); + vs->client_height = ds_get_height(ds); vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE); vnc_write_u8(vs, 0); vnc_write_u16(vs, 1); /* number of rects */ - vnc_framebuffer_update(vs, 0, 0, ds_get_width(ds), ds_get_height(ds), + vnc_framebuffer_update(vs, 0, 0, vs->client_width, vs->client_height, VNC_ENCODING_DESKTOPRESIZE); vnc_flush(vs); } @@ -1975,8 +1977,10 @@ static int protocol_client_init(VncState *vs, uint8_t *data, size_t len) char buf[1024]; int size; - vnc_write_u16(vs, ds_get_width(vs->ds)); - vnc_write_u16(vs, ds_get_height(vs->ds)); + vs->client_width = ds_get_width(vs->ds); + vs->client_height = ds_get_height(vs->ds); + vnc_write_u16(vs, vs->client_width); + vnc_write_u16(vs, vs->client_height); pixel_format_message(vs); diff --git a/vnc.h b/vnc.h index 51595e6eb9..7b64cf730b 100644 --- a/vnc.h +++ b/vnc.h @@ -134,6 +134,8 @@ struct VncState int absolute; int last_x; int last_y; + int client_width; + int client_height; uint32_t vnc_encoding;