summaryrefslogtreecommitdiff
path: root/vnc.c
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2010-05-25 18:25:20 +0200
committerAnthony Liguori <aliguori@us.ibm.com>2010-06-01 13:31:40 -0500
commit1d4b638ad1fc273a19d93c7d4725fecdd7e5182a (patch)
treedd140d42b714be23ef68ac53a7fd8cd43cca0898 /vnc.c
parent847ce6a185f9ccbc089ef24a6c402b8c99113341 (diff)
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 <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'vnc.c')
-rw-r--r--vnc.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/vnc.c b/vnc.c
index 5fc7012eb9..30db8b1c35 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);
}