[Pkg-libvirt-commits] [SCM] libgtk-vnc packaging branch, master, updated. debian/0.3.7-3-4-gd0fe410

Guido Guenther agx at sigxcpu.org
Wed Oct 29 08:12:37 UTC 2008


The following commit has been merged in the master branch:
commit 090c84f4a9228509e767409a24c72b4210568a85
Author: Guido Günther <agx at sigxcpu.org>
Date:   Sun Oct 26 16:20:34 2008 +0100

    fix bogus screen updates
    
    patch pulled from upstream mailing list

diff --git a/debian/patches/fix-bogus-screen-updates.diff b/debian/patches/fix-bogus-screen-updates.diff
new file mode 100644
index 0000000..7b803d6
--- /dev/null
+++ b/debian/patches/fix-bogus-screen-updates.diff
@@ -0,0 +1,59 @@
+From: "Daniel P. Berrange" <berrange at redhat.com>
+To: gtk-vnc-devel <gtk-vnc-devel at lists.sourceforge.net>
+
+I just started randomly getting a X error when running against certain
+VNC servers. Eventually discovered that it was caused by a server 
+switching from relative to absolute mouse mode. This uses a psuedo
+encoding, unfortuntely our code was triggering a screen redraw on every
+frame buffer update message, not just the ones with framebuffer data.
+The absolute pointer message comes with x=1, y=0, w=800, h=600, which
+caused us to try and copy an 800 pixel client image to another 800 pixel
+image on the server, at an offset of 1,thus 1 pixel out of bounds.
+
+This patch avoids triggering updates for anything other than real fb
+updates
+
+Daniel
+
+diff --git a/src/gvnc.c b/src/gvnc.c
+--- a/src/gvnc.c
++++ b/src/gvnc.c
+@@ -1946,21 +1946,27 @@ static void gvnc_framebuffer_update(stru
+ 	switch (etype) {
+ 	case GVNC_ENCODING_RAW:
+ 		gvnc_raw_update(gvnc, x, y, width, height);
++		gvnc_update(gvnc, x, y, width, height);
+ 		break;
+ 	case GVNC_ENCODING_COPY_RECT:
+ 		gvnc_copyrect_update(gvnc, x, y, width, height);
++		gvnc_update(gvnc, x, y, width, height);
+ 		break;
+ 	case GVNC_ENCODING_RRE:
+ 		gvnc_rre_update(gvnc, x, y, width, height);
++		gvnc_update(gvnc, x, y, width, height);
+ 		break;
+ 	case GVNC_ENCODING_HEXTILE:
+ 		gvnc_hextile_update(gvnc, x, y, width, height);
++		gvnc_update(gvnc, x, y, width, height);
+ 		break;
+ 	case GVNC_ENCODING_ZRLE:
+ 		gvnc_zrle_update(gvnc, x, y, width, height);
++		gvnc_update(gvnc, x, y, width, height);
+ 		break;
+ 	case GVNC_ENCODING_TIGHT:
+ 		gvnc_tight_update(gvnc, x, y, width, height);
++		gvnc_update(gvnc, x, y, width, height);
+ 		break;
+ 	case GVNC_ENCODING_DESKTOP_RESIZE:
+ 		gvnc_resize(gvnc, width, height);
+@@ -1986,8 +1992,6 @@ static void gvnc_framebuffer_update(stru
+ 		gvnc->has_error = TRUE;
+ 		break;
+ 	}
+-
+-	gvnc_update(gvnc, x, y, width, height);
+ }
+ 
+ gboolean gvnc_server_message(struct gvnc *gvnc)
+
+
diff --git a/debian/patches/series b/debian/patches/series
index 926832c..7d9e61e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
 xulrunner-not-mozilla.diff
 plugindir.diff
 gtk-vnc-ungrab.diff
+fix-bogus-screen-updates.diff

-- 
libgtk-vnc packaging



More information about the Pkg-libvirt-commits mailing list