qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH v2 16/18] vnc: tight: fix rgb_prepare_row


From: Corentin Chary
Subject: [Qemu-devel] [PATCH v2 16/18] vnc: tight: fix rgb_prepare_row
Date: Wed, 7 Jul 2010 20:58:04 +0200

rgb_prepare_row bpp depends on the server display surface, not
the client.

Signed-off-by: Corentin Chary <address@hidden>
---
 ui/vnc-enc-tight.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/ui/vnc-enc-tight.c b/ui/vnc-enc-tight.c
index 3f19df2..eaa88ce 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 */
 
-- 
1.7.1




reply via email to

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