aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2010-05-25 18:25:18 +0200
committerAnthony Liguori <aliguori@us.ibm.com>2010-06-01 13:30:08 -0500
commit5862d195f90cb63c53b9dc3f54e10f8b9372bcf6 (patch)
tree856b605d2ef4c06b3edccca8adfe954b55304af7
parent6356e472512c55a5dc3aaf12ce12a6eb916dd045 (diff)
vnc: keep track of client desktop size
Add two new variables to keep track of the vnc clients desktop size. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--vnc.c10
-rw-r--r--vnc.h2
2 files changed, 9 insertions, 3 deletions
diff --git a/vnc.c b/vnc.c
index a3a7840075..c8fe659a13 100644
--- a/vnc.c
+++ b/vnc.c
@@ -529,10 +529,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, 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);
}
@@ -1975,8 +1977,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 51595e6eb9..7b64cf730b 100644
--- a/vnc.h
+++ b/vnc.h
@@ -134,6 +134,8 @@ struct VncState
int absolute;
int last_x;
int last_y;
+ int client_width;
+ int client_height;
uint32_t vnc_encoding;