diff options
Diffstat (limited to 'otk/pseudorendercontrol.cc')
| -rw-r--r-- | otk/pseudorendercontrol.cc | 21 |
1 files changed, 11 insertions, 10 deletions
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 |
