From 225724f20a0e613d990a673cb27c8254b4493ee3 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Tue, 25 May 2010 18:25:20 +0200 Subject: [PATCH] vnc: move size-changed check into the vnc_desktop_resize function. This make sure we send a desktop resize message only in case we actually have to, using the new variables which track the clients desktop size. Signed-off-by: Gerd Hoffmann Signed-off-by: Anthony Liguori --- vnc.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/vnc.c b/vnc.c index 5fc7012..30db8b1 100644 --- a/vnc.c +++ b/vnc.c @@ -529,6 +529,10 @@ static void vnc_desktop_resize(VncState *vs) if (vs->csock == -1 || !vnc_has_feature(vs, VNC_FEATURE_RESIZE)) { return; } + if (vs->client_width == ds_get_width(ds) && + vs->client_height == ds_get_height(ds)) { + return; + } vs->client_width = ds_get_width(ds); vs->client_height = ds_get_height(ds); vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE); @@ -541,7 +545,6 @@ static void vnc_desktop_resize(VncState *vs) static void vnc_dpy_resize(DisplayState *ds) { - int size_changed; VncDisplay *vd = ds->opaque; VncState *vs; @@ -559,16 +562,12 @@ static void vnc_dpy_resize(DisplayState *ds) vd->guest.ds = qemu_mallocz(sizeof(*vd->guest.ds)); if (ds_get_bytes_per_pixel(ds) != vd->guest.ds->pf.bytes_per_pixel) console_color_init(ds); - size_changed = ds_get_width(ds) != vd->guest.ds->width || - ds_get_height(ds) != vd->guest.ds->height; *(vd->guest.ds) = *(ds->surface); memset(vd->guest.dirty, 0xFF, sizeof(vd->guest.dirty)); QTAILQ_FOREACH(vs, &vd->clients, next) { vnc_colordepth(vs); - if (size_changed) { - vnc_desktop_resize(vs); - } + vnc_desktop_resize(vs); if (vs->vd->cursor) { vnc_cursor_define(vs); } -- 2.7.4