From 4043a0137b183e0df1e1404d4852aa7395788f55 Mon Sep 17 00:00:00 2001 From: Corentin Chary Date: Wed, 7 Jul 2010 20:58:04 +0200 Subject: vnc: tight: fix rgb_prepare_row rgb_prepare_row bpp depends on the server display surface, not the client. Signed-off-by: Corentin Chary Signed-off-by: Anthony Liguori --- ui/vnc-enc-tight.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'ui') diff --git a/ui/vnc-enc-tight.c b/ui/vnc-enc-tight.c index 3f19df2ba7..eaa88cef9a 100644 --- a/ui/vnc-enc-tight.c +++ b/ui/vnc-enc-tight.c @@ -1180,12 +1180,17 @@ DEFINE_RGB_GET_ROW_FUNCTION(32) static void rgb_prepare_row(VncState *vs, uint8_t *dst, int x, int y, int count) { - if (vs->tight.pixel24) - rgb_prepare_row24(vs, dst, x, y, count); - else if (ds_get_bytes_per_pixel(vs->ds) == 4) - rgb_prepare_row32(vs, dst, x, y, count); - else + if (ds_get_bytes_per_pixel(vs->ds) == 4) { + if (vs->ds->surface->pf.rmax == 0xFF && + vs->ds->surface->pf.gmax == 0xFF && + vs->ds->surface->pf.bmax == 0xFF) { + rgb_prepare_row24(vs, dst, x, y, count); + } else { + rgb_prepare_row32(vs, dst, x, y, count); + } + } else { rgb_prepare_row16(vs, dst, x, y, count); + } } #endif /* CONFIG_VNC_JPEG or CONFIG_VNC_PNG */ -- cgit v1.2.3