From cd25c83aad93067d57b49cf5efe28a865f7dd7d2 Mon Sep 17 00:00:00 2001 From: Sylvain Becker Date: Wed, 30 Jan 2019 17:16:08 +0100 Subject: [PATCH] Fix blit with blending (Blit_A) to RGB332 which has no palette --- src/video/SDL_blit_A.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/video/SDL_blit_A.c b/src/video/SDL_blit_A.c index 79ecc9510e316..a04d1bc8fb12a 100644 --- a/src/video/SDL_blit_A.c +++ b/src/video/SDL_blit_A.c @@ -1276,7 +1276,12 @@ SDL_CalculateBlitA(SDL_Surface * surface) /* Per-pixel alpha blits */ switch (df->BytesPerPixel) { case 1: - return BlitNto1PixelAlpha; + if (df->palette != NULL) { + return BlitNto1PixelAlpha; + } else { + /* RGB332 has no palette ! */ + return BlitNtoNPixelAlpha; + } case 2: if (sf->BytesPerPixel == 4 && sf->Amask == 0xff000000 @@ -1326,7 +1331,12 @@ SDL_CalculateBlitA(SDL_Surface * surface) /* Per-surface alpha blits */ switch (df->BytesPerPixel) { case 1: - return BlitNto1SurfaceAlpha; + if (df->palette != NULL) { + return BlitNto1SurfaceAlpha; + } else { + /* RGB332 has no palette ! */ + return BlitNtoNSurfaceAlpha; + } case 2: if (surface->map->identity) { @@ -1374,7 +1384,13 @@ SDL_CalculateBlitA(SDL_Surface * surface) case SDL_COPY_COLORKEY | SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND: if (sf->Amask == 0) { if (df->BytesPerPixel == 1) { - return BlitNto1SurfaceAlphaKey; + + if (df->palette != NULL) { + return BlitNto1SurfaceAlphaKey; + } else { + /* RGB332 has no palette ! */ + return BlitNtoNSurfaceAlphaKey; + } } else { return BlitNtoNSurfaceAlphaKey; }