[Top][All Lists]
[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
- [Qemu-devel] [PATCH] update server bits on vnc_update,
Glauber Costa <=