mirror of https://github.com/xemu-project/xemu.git
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>
This commit is contained in:
parent
847ce6a185
commit
1d4b638ad1
11
vnc.c
11
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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue