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

This commit is contained in:
Sam Lantinga
2024-07-20 18:44:23 -07:00
parent 979c71b18b
commit 1f3b2fc8b3

View File

@@ -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);
}