Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

It turns out both the software and the OpenGL renderer had the same p…

…roblem.

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.
  • Loading branch information
slouken committed Nov 25, 2008
1 parent 8e54202 commit 335c01adb5520ad2003368d8dcea2c7d27b4b3e5
Showing with 2 additions and 5 deletions.
  1. +2 −1 src/video/SDL_surface.c
  2. +0 −4 src/video/SDL_video.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;
@@ -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);
}

0 comments on commit 335c01a

Please sign in to comment.