Browse Source

SDL_BlitSurfaceUnchecked() should invalidate the map when switching from scaled to unscaled blits

Sam Lantinga 9 months ago
parent
commit
1f3b2fc8b3
1 changed files with 6 additions and 6 deletions
  1. 6 6
      src/video/SDL_surface.c

+ 6 - 6
src/video/SDL_surface.c

@@ -855,6 +855,12 @@ int SDL_GetSurfaceClipRect(SDL_Surface *surface, SDL_Rect *rect)
 int SDL_BlitSurfaceUnchecked(SDL_Surface *src, const SDL_Rect *srcrect,
                              SDL_Surface *dst, const SDL_Rect *dstrect)
 {
+    /* Switch back to a fast blit if we were previously stretching */
+    if (src->internal->map.info.flags & SDL_COPY_NEAREST) {
+        src->internal->map.info.flags &= ~SDL_COPY_NEAREST;
+        SDL_InvalidateMap(&src->internal->map);
+    }
+
     /* Check to make sure the blit mapping is valid */
     if ((src->internal->map.dst != dst) ||
         (dst->internal->palette &&
@@ -942,12 +948,6 @@ int SDL_BlitSurface(SDL_Surface *src, const SDL_Rect *srcrect,
         return 0;
     }
 
-    /* Switch back to a fast blit if we were previously stretching */
-    if (src->internal->map.info.flags & SDL_COPY_NEAREST) {
-        src->internal->map.info.flags &= ~SDL_COPY_NEAREST;
-        SDL_InvalidateMap(&src->internal->map);
-    }
-
     return SDL_BlitSurfaceUnchecked(src, &r_src, dst, &r_dst);
 }