From ffb307e4dc5c621a13624b7092d3885ddf13caee Mon Sep 17 00:00:00 2001 From: Sylvain Becker Date: Sun, 18 Oct 2020 09:52:56 +0200 Subject: [PATCH] Fixed bug 5304 - add SDL_HasSurfaceRLE() (Thanks Rene Dudfield and Dan Lawrence) --- include/SDL_surface.h | 7 +++++++ src/dynapi/SDL_dynapi_overrides.h | 1 + src/dynapi/SDL_dynapi_procs.h | 1 + src/video/SDL_surface.c | 14 ++++++++++++++ 4 files changed, 23 insertions(+) diff --git a/include/SDL_surface.h b/include/SDL_surface.h index 2bffb8115..d3f8c814e 100644 --- a/include/SDL_surface.h +++ b/include/SDL_surface.h @@ -237,6 +237,13 @@ extern DECLSPEC int SDLCALL SDL_SaveBMP_RW extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface, int flag); +/** + * \brief Returns whether the surface is RLE enabled + * + * \return SDL_TRUE if the surface is RLE enabled, or SDL_FALSE if the surface is NULL or not RLE enabled + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface); + /** * \brief Sets the color key (transparent pixel) in a blittable surface. * diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h index cd3c41ba6..2c7d35fb2 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -767,3 +767,4 @@ #define SDL_SIMDRealloc SDL_SIMDRealloc_REAL #define SDL_AndroidRequestPermission SDL_AndroidRequestPermission_REAL #define SDL_OpenURL SDL_OpenURL_REAL +#define SDL_HasSurfaceRLE SDL_HasSurfaceRLE_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index df87ad297..4ddd57b21 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -828,3 +828,4 @@ SDL_DYNAPI_PROC(void*,SDL_SIMDRealloc,(void *a, const size_t b),(a, b),return) SDL_DYNAPI_PROC(SDL_bool,SDL_AndroidRequestPermission,(const char *a),(a),return) #endif SDL_DYNAPI_PROC(int,SDL_OpenURL,(const char *a),(a),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasSurfaceRLE,(SDL_Surface *a),(a),return) diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c index d6409e8fc..ade68bf34 100644 --- a/src/video/SDL_surface.c +++ b/src/video/SDL_surface.c @@ -249,6 +249,20 @@ SDL_SetSurfaceRLE(SDL_Surface * surface, int flag) return 0; } +SDL_bool +SDL_HasSurfaceRLE(SDL_Surface * surface) +{ + if (!surface) { + return SDL_FALSE; + } + + if (!(surface->map->info.flags & SDL_COPY_RLE_DESIRED)) { + return SDL_FALSE; + } + + return SDL_TRUE; +} + int SDL_SetColorKey(SDL_Surface * surface, int flag, Uint32 key) {