From 59d361bc5090c1e030c3f19217cc48698fd04d6b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 7 Dec 2008 22:37:40 +0000 Subject: [PATCH] Fixed picking blit function when RLE fails --- src/video/SDL_blit.h | 1 + src/video/SDL_blit_0.c | 2 +- src/video/SDL_blit_1.c | 2 +- src/video/SDL_blit_A.c | 2 +- src/video/SDL_blit_N.c | 2 +- src/video/SDL_surface.c | 2 +- 6 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/video/SDL_blit.h b/src/video/SDL_blit.h index 3e0caa942..5216f6723 100644 --- a/src/video/SDL_blit.h +++ b/src/video/SDL_blit.h @@ -52,6 +52,7 @@ #define SDL_COPY_RLE_DESIRED 0x00001000 #define SDL_COPY_RLE_COLORKEY 0x00002000 #define SDL_COPY_RLE_ALPHAKEY 0x00004000 +#define SDL_COPY_RLE_MASK (SDL_COPY_RLE_DESIRED|SDL_COPY_RLE_COLORKEY|SDL_COPY_RLE_ALPHAKEY) /* SDL blit CPU flags */ #define SDL_CPU_ANY 0x00000000 diff --git a/src/video/SDL_blit_0.c b/src/video/SDL_blit_0.c index 6c82ccfe9..b7ba4757e 100644 --- a/src/video/SDL_blit_0.c +++ b/src/video/SDL_blit_0.c @@ -465,7 +465,7 @@ SDL_CalculateBlit0(SDL_Surface * surface) } else { which = surface->map->dst->format->BytesPerPixel; } - switch (surface->map->info.flags) { + switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) { case 0: return bitmap_blit[which]; diff --git a/src/video/SDL_blit_1.c b/src/video/SDL_blit_1.c index 617693502..c9c906a3a 100644 --- a/src/video/SDL_blit_1.c +++ b/src/video/SDL_blit_1.c @@ -532,7 +532,7 @@ SDL_CalculateBlit1(SDL_Surface * surface) } else { which = dstfmt->BytesPerPixel; } - switch (surface->map->info.flags) { + switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) { case 0: return one_blit[which]; diff --git a/src/video/SDL_blit_A.c b/src/video/SDL_blit_A.c index 1bba55d5b..fae06f175 100644 --- a/src/video/SDL_blit_A.c +++ b/src/video/SDL_blit_A.c @@ -2153,7 +2153,7 @@ SDL_CalculateBlitA(SDL_Surface * surface) SDL_PixelFormat *sf = surface->format; SDL_PixelFormat *df = surface->map->dst->format; - switch (surface->map->info.flags) { + switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) { case SDL_COPY_BLEND: /* Per-pixel alpha blits */ switch (df->BytesPerPixel) { diff --git a/src/video/SDL_blit_N.c b/src/video/SDL_blit_N.c index 8d21085af..80f69e3c5 100644 --- a/src/video/SDL_blit_N.c +++ b/src/video/SDL_blit_N.c @@ -2430,7 +2430,7 @@ SDL_CalculateBlitN(SDL_Surface * surface) return (NULL); } - switch (surface->map->info.flags) { + switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) { case 0: blitfun = NULL; if (dstfmt->BitsPerPixel == 8) { diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c index 09a690393..95c170470 100644 --- a/src/video/SDL_surface.c +++ b/src/video/SDL_surface.c @@ -548,7 +548,7 @@ SDL_GetSurfaceScaleMode(SDL_Surface * surface, int *scaleMode) return 0; } - switch (surface->map->info.flags & (SDL_COPY_NEAREST)) { + switch (surface->map->info.flags & SDL_COPY_NEAREST) { case SDL_COPY_NEAREST: *scaleMode = SDL_TEXTURESCALEMODE_FAST; break;