X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ab5aa90e1e05a89845c6e802ef1b2366d203aa45..c4a14f843f363645e85bda24d03d68c6afcda9fa:/lib/gdi/gpixmap.cpp diff --git a/lib/gdi/gpixmap.cpp b/lib/gdi/gpixmap.cpp index c2c75e7a..f0f04d69 100644 --- a/lib/gdi/gpixmap.cpp +++ b/lib/gdi/gpixmap.cpp @@ -74,15 +74,8 @@ gSurfaceSystem::gSurfaceSystem(eSize size, int _bpp) bypp=(bpp+7)/8; } stride=x*bypp; - if (bpp==8) - { - clut.colors=256; - clut.data=new gRGB[clut.colors]; - } else - { - clut.colors=0; - clut.data=0; - } + clut.colors=0; + clut.data=0; data=malloc(x*y*bypp); } @@ -139,21 +132,21 @@ void gPixmap::blit(const gPixmap &src, ePoint pos, const gRegion &clip, int flag { for (unsigned int i=0; ibpp == 8) && (src.surface->bpp==8)) { __u8 *srcptr=(__u8*)src.surface->data; __u8 *dstptr=(__u8*)surface->data; - srcptr+=srcarea.left()*surface->bypp+srcarea.top()*src.surface->stride; + srcptr+=srcarea.left()*src.surface->bypp+srcarea.top()*src.surface->stride; dstptr+=area.left()*surface->bypp+area.top()*surface->stride; for (int y=0; ybypp+srcarea.top()*src.surface->stride; + srcptr+=srcarea.left()*src.surface->bypp+srcarea.top()*src.surface->stride; dstptr+=area.left()*surface->bypp+area.top()*surface->stride; for (int y=0; yclut.colors) || (!target.surface->clut.colors)) return; + gColor *lookup=new gColor[surface->clut.colors]; for (int i=0; iclut.colors; i++) @@ -385,6 +379,8 @@ gColor gPalette::findColor(const gRGB &rgb) const ttd+=td; if (ttd>=difference) continue; + if (!ttd) + return t; difference=ttd; best_choice=t; }