Преглед на файлове

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.
Sam Lantinga преди 10 месеца
родител
ревизия
089dc86bcf
променени са 1 файла, в които са добавени 1 реда и са изтрити 10 реда
  1. 1 10
      src/video/SDL_surface.c

+ 1 - 10
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;
 }