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.
diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c index efab108..7a53b5c 100644 --- a/src/video/SDL_surface.c +++ b/src/video/SDL_surface.c
@@ -1726,8 +1726,7 @@ // 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 @@ 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; }