From 228035d0f3afa393259bb40fad5e5548b6799f7b Mon Sep 17 00:00:00 2001
From: Sam Lantinga <slouken@libsdl.org>
Date: Tue, 25 Nov 2008 05:29:14 +0000
Subject: [PATCH] It turns out both the software and the OpenGL renderer had
 the same problem. According to the spec, when SDL_SRCALPHA is set, the
 colorkey is ignored, so we just need to convert the colorkey into the alpha
 channel.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403248
---
 src/video/SDL_surface.c | 3 ++-
 src/video/SDL_video.c   | 4 ----
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c
index 7b461f3a..d1f9563b 100644
--- a/src/video/SDL_surface.c
+++ b/src/video/SDL_surface.c
@@ -270,7 +270,7 @@ SDL_SetColorKey(SDL_Surface * surface, Uint32 flag, Uint32 key)
 }
 
 /* This is a fairly slow function to switch from colorkey to alpha */
-void
+static void
 SDL_ConvertColorkeyToAlpha(SDL_Surface * surface)
 {
     int x, y;
@@ -813,6 +813,7 @@ SDL_ConvertSurface(SDL_Surface * surface,
                     &keyG, &keyB, &keyA);
         SDL_SetColorKey(convert, 1,
                         SDL_MapRGBA(convert->format, keyR, keyG, keyB, keyA));
+        SDL_ConvertColorkeyToAlpha(convert);
     }
     convert->map->info.r = surface->map->info.r;
     convert->map->info.g = surface->map->info.g;
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index e59cc84c..28eade9a 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -46,9 +46,6 @@
 #endif
 #endif /* SDL_VIDEO_OPENGL */
 
-/* From SDL_surface.c */
-extern void SDL_ConvertColorkeyToAlpha(SDL_Surface * surface);
-
 /* Available video drivers */
 static VideoBootStrap *bootstrap[] = {
 #if SDL_VIDEO_DRIVER_COCOA
@@ -1588,7 +1585,6 @@ SDL_CreateTextureFromSurface(Uint32 format, SDL_Surface * surface)
             }
             dst = SDL_ConvertSurface(surface, dst_fmt, 0);
             if (dst) {
-                SDL_ConvertColorkeyToAlpha(dst);
                 SDL_UpdateTexture(textureID, NULL, dst->pixels, dst->pitch);
                 SDL_FreeSurface(dst);
             }
-- 
2.18.1