SDL: Lazily redo RLE encoding

From 089dc86bcfebe6737965fcb4db9c36bcb2fbc7da Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
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 efab1081db509..7a53b5cb16d8c 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;
 }