diff options
-rw-r--r-- | 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 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 */ |