From 6b4195a542083c97f696c843b9823d578b018996 Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Sat, 11 Nov 2017 00:18:57 +0000 Subject: SDL: Use RLE acceleration for SDL2 transparent surfaces We were already doing it for SDL1.2, but with SDL2 the SDL_RLEACCEL is not passed to SDL and instead we need to call SDL_SetSurfaceRLE. --- backends/platform/sdl/sdl.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'backends/platform/sdl') diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp index f44d87666a..f2bf9590c5 100644 --- a/backends/platform/sdl/sdl.cpp +++ b/backends/platform/sdl/sdl.cpp @@ -754,10 +754,13 @@ int SDL_SetAlpha(SDL_Surface *surface, Uint32 flag, Uint8 alpha) { if (SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_NONE)) { return -1; } + SDL_SetSurfaceRLE(surface, 0); } else { if (SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND)) { return -1; } + if (flag & SDL_RLEACCEL) + SDL_SetSurfaceRLE(surface, 1); } return 0; @@ -765,7 +768,13 @@ int SDL_SetAlpha(SDL_Surface *surface, Uint32 flag, Uint8 alpha) { #undef SDL_SetColorKey int SDL_SetColorKey_replacement(SDL_Surface *surface, Uint32 flag, Uint32 key) { - return SDL_SetColorKey(surface, SDL_TRUE, key) ? -1 : 0; + if (SDL_SetColorKey(surface, SDL_TRUE, key)) { + return -1; + } + + if (flag & SDL_RLEACCEL) + SDL_SetSurfaceRLE(surface, 1); + return 0; } #endif -- cgit v1.2.3