* [Qemu-devel] [PATCH 1/4] vnc: set the right prefered encoding
@ 2010-05-06 8:39 Corentin Chary
2010-05-06 8:39 ` [Qemu-devel] [PATCH 2/4] vnc: really call zlib if we want zlib Corentin Chary
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Corentin Chary @ 2010-05-06 8:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Corentin Chary, Anthony Liguori
>From RFB specs: "The order of the encoding types given in this
message is a hint by the client as to its preference (the first
encoding specified being most preferred)"
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
---
vnc.c | 15 +++++++++++----
1 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/vnc.c b/vnc.c
index b1a3fdb..a91c3a3 100644
--- a/vnc.c
+++ b/vnc.c
@@ -1587,6 +1587,13 @@ static void send_ext_audio_ack(VncState *vs)
vnc_flush(vs);
}
+static void set_encoding(VncState *vs, int encoding)
+{
+ if (vs->vnc_encoding == -1) {
+ vs->vnc_encoding = encoding;
+ }
+}
+
static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings)
{
int i;
@@ -1594,7 +1601,7 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings)
vnc_zlib_init(vs);
vs->features = 0;
- vs->vnc_encoding = 0;
+ vs->vnc_encoding = -1;
vs->tight_compression = 9;
vs->tight_quality = 9;
vs->absolute = -1;
@@ -1603,18 +1610,18 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings)
enc = encodings[i];
switch (enc) {
case VNC_ENCODING_RAW:
- vs->vnc_encoding = enc;
+ set_encoding(vs, enc);
break;
case VNC_ENCODING_COPYRECT:
vs->features |= VNC_FEATURE_COPYRECT_MASK;
break;
case VNC_ENCODING_HEXTILE:
vs->features |= VNC_FEATURE_HEXTILE_MASK;
- vs->vnc_encoding = enc;
+ set_encoding(vs, enc);
break;
case VNC_ENCODING_ZLIB:
vs->features |= VNC_FEATURE_ZLIB_MASK;
- vs->vnc_encoding = enc;
+ set_encoding(vs, enc);
break;
case VNC_ENCODING_DESKTOPRESIZE:
vs->features |= VNC_FEATURE_RESIZE_MASK;
--
1.7.0.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 2/4] vnc: really call zlib if we want zlib
2010-05-06 8:39 [Qemu-devel] [PATCH 1/4] vnc: set the right prefered encoding Corentin Chary
@ 2010-05-06 8:39 ` Corentin Chary
2010-05-06 8:39 ` [Qemu-devel] [PATCH 3/4] vnc: only use a single zlib stream Corentin Chary
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Corentin Chary @ 2010-05-06 8:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Corentin Chary, Anthony Liguori
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
---
vnc.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/vnc.c b/vnc.c
index a91c3a3..d0c0d00 100644
--- a/vnc.c
+++ b/vnc.c
@@ -655,7 +655,7 @@ static void send_framebuffer_update(VncState *vs, int x, int y, int w, int h)
{
switch(vs->vnc_encoding) {
case VNC_ENCODING_ZLIB:
- vnc_hextile_send_framebuffer_update(vs, x, y, w, h);
+ vnc_zlib_send_framebuffer_update(vs, x, y, w, h);
break;
case VNC_ENCODING_HEXTILE:
vnc_framebuffer_update(vs, x, y, w, h, VNC_ENCODING_HEXTILE);
--
1.7.0.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 3/4] vnc: only use a single zlib stream
2010-05-06 8:39 [Qemu-devel] [PATCH 1/4] vnc: set the right prefered encoding Corentin Chary
2010-05-06 8:39 ` [Qemu-devel] [PATCH 2/4] vnc: really call zlib if we want zlib Corentin Chary
@ 2010-05-06 8:39 ` Corentin Chary
2010-05-06 8:39 ` [Qemu-devel] [PATCH 4/4] vnc: adjust compression zstream level Corentin Chary
2010-05-18 7:16 ` [Qemu-devel] Re: [PATCH 1/4] vnc: set the right prefered encoding Corentin Chary
3 siblings, 0 replies; 5+ messages in thread
From: Corentin Chary @ 2010-05-06 8:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Corentin Chary, Anthony Liguori
According to http://tigervnc.org/cgi-bin/rfbproto#zlib-encoding
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
---
vnc-encoding-zlib.c | 12 +++++-------
vnc.h | 2 +-
2 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/vnc-encoding-zlib.c b/vnc-encoding-zlib.c
index 4a495ad..6a16a79 100644
--- a/vnc-encoding-zlib.c
+++ b/vnc-encoding-zlib.c
@@ -54,9 +54,9 @@ static void vnc_zlib_start(VncState *vs)
vs->output = vs->zlib;
}
-static int vnc_zlib_stop(VncState *vs, int stream_id)
+static int vnc_zlib_stop(VncState *vs)
{
- z_streamp zstream = &vs->zlib_stream[stream_id];
+ z_streamp zstream = &vs->zlib_stream;
int previous_out;
// switch back to normal output/zlib buffers
@@ -70,7 +70,7 @@ static int vnc_zlib_stop(VncState *vs, int stream_id)
if (zstream->opaque != vs) {
int err;
- VNC_DEBUG("VNC: initializing zlib stream %d\n", stream_id);
+ VNC_DEBUG("VNC: initializing zlib stream\n");
VNC_DEBUG("VNC: opaque = %p | vs = %p\n", zstream->opaque, vs);
zstream->zalloc = zalloc;
zstream->zfree = zfree;
@@ -122,7 +122,7 @@ void vnc_zlib_send_framebuffer_update(VncState *vs, int x, int y, int w, int h)
// compress the stream
vnc_zlib_start(vs);
vnc_raw_send_framebuffer_update(vs, x, y, w, h);
- bytes_written = vnc_zlib_stop(vs, 0);
+ bytes_written = vnc_zlib_stop(vs);
if (bytes_written == -1)
return;
@@ -136,7 +136,5 @@ void vnc_zlib_send_framebuffer_update(VncState *vs, int x, int y, int w, int h)
void vnc_zlib_init(VncState *vs)
{
- int i;
- for (i=0; i<(sizeof(vs->zlib_stream) / sizeof(z_stream)); i++)
- vs->zlib_stream[i].opaque = NULL;
+ vs->zlib_stream.opaque = NULL;
}
diff --git a/vnc.h b/vnc.h
index 1aa71b0..dfdb240 100644
--- a/vnc.h
+++ b/vnc.h
@@ -173,7 +173,7 @@ struct VncState
/* Zlib */
Buffer zlib;
Buffer zlib_tmp;
- z_stream zlib_stream[4];
+ z_stream zlib_stream;
Notifier mouse_mode_notifier;
--
1.7.0.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 4/4] vnc: adjust compression zstream level
2010-05-06 8:39 [Qemu-devel] [PATCH 1/4] vnc: set the right prefered encoding Corentin Chary
2010-05-06 8:39 ` [Qemu-devel] [PATCH 2/4] vnc: really call zlib if we want zlib Corentin Chary
2010-05-06 8:39 ` [Qemu-devel] [PATCH 3/4] vnc: only use a single zlib stream Corentin Chary
@ 2010-05-06 8:39 ` Corentin Chary
2010-05-18 7:16 ` [Qemu-devel] Re: [PATCH 1/4] vnc: set the right prefered encoding Corentin Chary
3 siblings, 0 replies; 5+ messages in thread
From: Corentin Chary @ 2010-05-06 8:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Corentin Chary, Anthony Liguori
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
---
vnc-encoding-zlib.c | 9 ++++++++-
vnc.h | 1 +
2 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/vnc-encoding-zlib.c b/vnc-encoding-zlib.c
index 6a16a79..29dd1b7 100644
--- a/vnc-encoding-zlib.c
+++ b/vnc-encoding-zlib.c
@@ -83,10 +83,17 @@ static int vnc_zlib_stop(VncState *vs)
return -1;
}
+ vs->zlib_level = vs->tight_compression;
zstream->opaque = vs;
}
- // XXX what to do if tight_compression changed in between?
+ if (vs->tight_compression != vs->zlib_level) {
+ if (deflateParams(zstream, vs->tight_compression,
+ Z_DEFAULT_STRATEGY) != Z_OK) {
+ return -1;
+ }
+ vs->zlib_level = vs->tight_compression;
+ }
// reserve memory in output buffer
buffer_reserve(&vs->output, vs->zlib.offset + 64);
diff --git a/vnc.h b/vnc.h
index dfdb240..96f3fe7 100644
--- a/vnc.h
+++ b/vnc.h
@@ -174,6 +174,7 @@ struct VncState
Buffer zlib;
Buffer zlib_tmp;
z_stream zlib_stream;
+ int zlib_level;
Notifier mouse_mode_notifier;
--
1.7.0.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] Re: [PATCH 1/4] vnc: set the right prefered encoding
2010-05-06 8:39 [Qemu-devel] [PATCH 1/4] vnc: set the right prefered encoding Corentin Chary
` (2 preceding siblings ...)
2010-05-06 8:39 ` [Qemu-devel] [PATCH 4/4] vnc: adjust compression zstream level Corentin Chary
@ 2010-05-18 7:16 ` Corentin Chary
3 siblings, 0 replies; 5+ messages in thread
From: Corentin Chary @ 2010-05-18 7:16 UTC (permalink / raw)
To: qemu-devel; +Cc: Corentin Chary, Anthony Liguori
Forget this series, I'm sending a rebased one.
--
Corentin Chary
http://xf.iksaif.net
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-05-18 16:58 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-06 8:39 [Qemu-devel] [PATCH 1/4] vnc: set the right prefered encoding Corentin Chary
2010-05-06 8:39 ` [Qemu-devel] [PATCH 2/4] vnc: really call zlib if we want zlib Corentin Chary
2010-05-06 8:39 ` [Qemu-devel] [PATCH 3/4] vnc: only use a single zlib stream Corentin Chary
2010-05-06 8:39 ` [Qemu-devel] [PATCH 4/4] vnc: adjust compression zstream level Corentin Chary
2010-05-18 7:16 ` [Qemu-devel] Re: [PATCH 1/4] vnc: set the right prefered encoding Corentin Chary
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).