[Spice-commits] server/red_worker.c
Alexander Larsson
alexl at kemper.freedesktop.org
Tue Jul 20 05:15:20 PDT 2010
server/red_worker.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
New commits:
commit bdeae7ffb234e9b5f06a3dbb9ea3337dbe9f5fb7
Author: Alexander Larsson <alexl at redhat.com>
Date: Tue Jul 20 14:05:36 2010 +0200
server: Properly order rgb for 24bit bitmaps when sending to libjpeg
SPICE_BITMAP_FMT_24BIT order is bgr, libjpeg wants rgb.
This fixes freedesktop bug #28089
diff --git a/server/red_worker.c b/server/red_worker.c
index bc3a7a3..cbfe405 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -7933,7 +7933,7 @@ static int red_rgb24bpp_to_24 (RedWorker *worker, const SpiceRect *src,
uint32_t image_stride;
uint8_t *frame_row;
size_t offset;
- int i, chunk;
+ int i, x, chunk;
chunks = image->data;
offset = 0;
@@ -7958,7 +7958,13 @@ static int red_rgb24bpp_to_24 (RedWorker *worker, const SpiceRect *src,
src_line += src->left * 3;
frame_row = frame;
- memcpy (frame_row, src_line, image_width * 3);
+ for (x = 0; x < image_width; x++) {
+ /* libjpegs stores rgb, spice/win32 stores bgr */
+ *frame_row++ = src_line[2]; /* red */
+ *frame_row++ = src_line[1]; /* green */
+ *frame_row++ = src_line[0]; /* blue */
+ src_line += 3;
+ }
frame += frame_stride;
}
More information about the Spice-commits
mailing list