From 089dc86bcfebe6737965fcb4db9c36bcb2fbc7da Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 8 Nov 2025 14:31:06 -0800 Subject: [PATCH] Lazily redo RLE encoding Also stop lying about the RLE encoding state, which causes crashes if we do RLE blit operations while the surface is locked. --- src/video/SDL_surface.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c index efab1081db..7a53b5cb16 100644 --- a/src/video/SDL_surface.c +++ b/src/video/SDL_surface.c @@ -1726,8 +1726,7 @@ bool SDL_LockSurface(SDL_Surface *surface) // Perform the lock if (surface->internal_flags & SDL_INTERNAL_SURFACE_RLEACCEL) { SDL_UnRLESurface(surface); - surface->internal_flags |= SDL_INTERNAL_SURFACE_RLEACCEL; // save accel'd state - SDL_UpdateSurfaceLockFlag(surface); + surface->flags |= SDL_SURFACE_LOCK_NEEDED; } #endif } @@ -1754,14 +1753,6 @@ void SDL_UnlockSurface(SDL_Surface *surface) return; } -#ifdef SDL_HAVE_RLE - // Update RLE encoded surface with new data - if (surface->internal_flags & SDL_INTERNAL_SURFACE_RLEACCEL) { - surface->internal_flags &= ~SDL_INTERNAL_SURFACE_RLEACCEL; // stop lying - SDL_RLESurface(surface); - } -#endif - surface->flags &= ~SDL_SURFACE_LOCKED; }