From e3f6e0ff8195e73f2fa8c9db431941e171dd0041 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 14 Feb 2003 19:18:19 +0000 Subject: make reduceDepth set the im->data member, with newly allocated data, so the pixelData in the surface isn't reduced --- otk/pseudorendercontrol.cc | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'otk/pseudorendercontrol.cc') diff --git a/otk/pseudorendercontrol.cc b/otk/pseudorendercontrol.cc index 990a60dd..7af57192 100644 --- a/otk/pseudorendercontrol.cc +++ b/otk/pseudorendercontrol.cc @@ -124,18 +124,19 @@ inline const XColor *PseudoRenderControl::pickColor(int r, int g, int b) const void PseudoRenderControl::reduceDepth(Surface &sf, XImage *im) const { pixel32 *data = sf.pixelData(); - char *p = (char *)data; + pixel32 *ret = (pixel32*)malloc(im->width * im->height * 4); + char *p = (char *)ret; int x, y; - for (y = 0; y < im->height; y++) { - for (x = 0; x < im->width; x++) { - p[x] = pickColor(data[x] >> default_red_shift, - data[x] >> default_green_shift, - data[x] >> default_blue_shift)->pixel; - } - data += im->width; - p += im->bytes_per_line; + for (y = 0; y < im->height; y++) { + for (x = 0; x < im->width; x++) { + p[x] = pickColor(data[x] >> default_red_shift, + data[x] >> default_green_shift, + data[x] >> default_blue_shift)->pixel; } - + data += im->width; + p += im->bytes_per_line; + } + im->data = (char*)ret; } void PseudoRenderControl::allocateColor(XColor *color) const -- cgit v1.2.3