qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] update server bits on vnc_update


From: Glauber Costa
Subject: [Qemu-devel] [PATCH] update server bits on vnc_update
Date: Sat, 18 Jul 2009 00:47:14 -0400

Since the server/guest split in vnc architecture, we
no longer update the server bits on large updates. Result
is screen gets garbled, specially on scroll actions.

I must admit I don't fully understand our vnc code, but after
a careful reading, it seemed to me the proposed patch would fix
it, and it indeed, works.

Gerd, Anthony, please tell me what you think of this approach.

This fixes the following bugs for me:
https://bugzilla.redhat.com/show_bug.cgi?id=503156
https://bugzilla.redhat.com/show_bug.cgi?id=507626
https://bugs.launchpad.net/qemu/+bug/397212

Signed-off-by: Glauber Costa <address@hidden>
CC: Gerd Hoffmann <address@hidden>
---
 vnc.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/vnc.c b/vnc.c
index de0ff87..acebdaf 100644
--- a/vnc.c
+++ b/vnc.c
@@ -262,9 +262,8 @@ static inline int vnc_and_bits(const uint32_t *d1, const 
uint32_t *d2,
     return 0;
 }
 
-static void vnc_update(VncState *vs, int x, int y, int w, int h)
+static void do_vnc_update(struct VncSurface *s, int x, int y, int w, int h)
 {
-    struct VncSurface *s = &vs->guest;
     int i;
 
     h += y;
@@ -286,6 +285,13 @@ static void vnc_update(VncState *vs, int x, int y, int w, 
int h)
             vnc_set_bit(s->dirty[y], (x + i) / 16);
 }
 
+
+static void vnc_update(VncState *vs, int x, int y, int w, int h)
+{
+    do_vnc_update(&vs->guest, x, y, w, h);
+    do_vnc_update(&vs->server, x, y, w, h);
+}
+
 static void vnc_dpy_update(DisplayState *ds, int x, int y, int w, int h)
 {
     VncDisplay *vd = ds->opaque;
-- 
1.6.2.2





reply via email to

[Prev in Thread] Current Thread [Next in Thread]