Ver Fonte

Added a fast path for converting the same format and pitch

Sam Lantinga há 7 meses atrás
pai
commit
9267930fea
1 ficheiros alterados com 11 adições e 7 exclusões
  1. 11 7
      src/video/SDL_surface.c

+ 11 - 7
src/video/SDL_surface.c

@@ -2298,13 +2298,17 @@ bool SDL_ConvertPixelsAndColorspace(int width, int height,
 
 
     // Fast path for same format copy
     // Fast path for same format copy
     if (src_format == dst_format && src_colorspace == dst_colorspace) {
     if (src_format == dst_format && src_colorspace == dst_colorspace) {
-        int i;
-        const int bpp = SDL_BYTESPERPIXEL(src_format);
-        width *= bpp;
-        for (i = height; i--;) {
-            SDL_memcpy(dst, src, width);
-            src = (const Uint8 *)src + src_pitch;
-            dst = (Uint8 *)dst + dst_pitch;
+        if (src_pitch == dst_pitch) {
+            SDL_memcpy(dst, src, height * src_pitch);
+        } else {
+            int i;
+            const int bpp = SDL_BYTESPERPIXEL(src_format);
+            width *= bpp;
+            for (i = height; i--;) {
+                SDL_memcpy(dst, src, width);
+                src = (const Uint8 *)src + src_pitch;
+                dst = (Uint8 *)dst + dst_pitch;
+            }
         }
         }
         return true;
         return true;
     }
     }