From 21da1f659d5cca414c83580816f9da2b3de5445e Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Thu, 3 Jun 2010 10:09:47 -0300 Subject: [PATCH 16/20] vnc: keep track of client desktop size RH-Author: Gerd Hoffmann Message-id: <1275559789-2280-4-git-send-email-kraxel@redhat.com> Patchwork-id: 9695 O-Subject: [RHEL-6 kvm PATCH 3/5] vnc: keep track of client desktop size Bugzilla: 590070 RH-Acked-by: Jes Sorensen RH-Acked-by: Markus Armbruster RH-Acked-by: Amit Shah Add two new variables to keep track of the vnc clients desktop size. Signed-off-by: Gerd Hoffmann Signed-off-by: Anthony Liguori bugzilla: #590070 -- QEMU misses DESKTOP-RESIZE event if it is triggered during client connection initialization upstream: 5862d195f90cb63c53b9dc3f54e10f8b9372bcf6 --- vnc.c | 10 +++++++--- vnc.h | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) Signed-off-by: Eduardo Habkost --- vnc.c | 10 +++++++--- vnc.h | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/vnc.c b/vnc.c index 9be6ac7..0741329 100644 --- a/vnc.c +++ b/vnc.c @@ -522,10 +522,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, 0); /* 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); } @@ -2104,8 +2106,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 71280cb..724b12a 100644 --- a/vnc.h +++ b/vnc.h @@ -129,6 +129,8 @@ struct VncState int absolute; int last_x; int last_y; + int client_width; + int client_height; uint32_t vnc_encoding; uint8_t tight_quality; -- 1.7.0.3