diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2010-05-25 18:25:20 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2010-06-01 13:31:40 -0500 |
commit | 1d4b638ad1fc273a19d93c7d4725fecdd7e5182a (patch) | |
tree | dd140d42b714be23ef68ac53a7fd8cd43cca0898 /vnc.c | |
parent | 847ce6a185f9ccbc089ef24a6c402b8c99113341 (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.c | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -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); } |