Patchwork vnc: hextile: do not generate ForegroundSpecified and SubrectsColoured tiles

login
register
mail settings
Submitter Anthony Liguori
Date Dec. 14, 2009, 8:21 p.m.
Message ID <1260822101-29530-1-git-send-email-aliguori@us.ibm.com>
Download mbox | patch
Permalink /patch/41127/
State New
Headers show

Comments

Anthony Liguori - Dec. 14, 2009, 8:21 p.m.
This violates the RFB specification (section 6.6.4).  It happens to work with
most clients but it's still wrong.

Reported-by: Yaniv Kaul <ykaul@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
 vnchextile.h |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

Patch

diff --git a/vnchextile.h b/vnchextile.h
index c96ede3..432ed89 100644
--- a/vnchextile.h
+++ b/vnchextile.h
@@ -73,7 +73,7 @@  static void CONCAT(send_hextile_tile_, NAME)(VncState *vs,
 	*last_bg = bg;
     }
 
-    if (!*has_fg || *last_fg != fg) {
+    if (n_colors < 3 && (!*has_fg || *last_fg != fg)) {
 	flags |= 0x04;
 	*has_fg = 1;
 	*last_fg = fg;
@@ -165,8 +165,6 @@  static void CONCAT(send_hextile_tile_, NAME)(VncState *vs,
 	    irow += ds_get_linesize(vs->ds) / sizeof(pixel_t);
 	}
 
-	/* A SubrectsColoured subtile invalidates the foreground color */
-	*has_fg = 0;
 	if (n_data > (w * h * sizeof(pixel_t))) {
 	    n_colors = 4;
 	    flags = 0x01;