src/video/directfb/SDL_DirectFB_video.c
changeset 219 f928da36f0e9
parent 167 cb384ef627f6
child 252 e8157fcb3114
--- a/src/video/directfb/SDL_DirectFB_video.c	Fri Oct 26 14:51:22 2001 +0000
+++ b/src/video/directfb/SDL_DirectFB_video.c	Thu Nov 01 16:21:40 2001 +0000
@@ -601,7 +601,7 @@
   if (src->flags & SDL_SRCCOLORKEY)
     {
       flags |= DSBLIT_SRC_COLORKEY;
-      surface->SetSrcColorKey (surface, src->format->colorkey);
+      DirectFB_SetHWColorKey (NULL, src, src->format->colorkey);
     }
 
   if (src->flags & SDL_SRCALPHA)
@@ -635,8 +635,17 @@
   return 0;
 }
 
-static int DirectFB_SetHWColorKey(_THIS, SDL_Surface *surface, Uint32 key)
+static int DirectFB_SetHWColorKey(_THIS, SDL_Surface *src, Uint32 key)
 {
+  SDL_PixelFormat  *fmt     = src->format;
+  IDirectFBSurface *surface = src->hwdata->surface;
+
+  /* ugly */
+  surface->SetSrcColorKey (surface,
+                           (key & fmt->Rmask) >> (fmt->Rshift - fmt->Rloss),
+                           (key & fmt->Gmask) >> (fmt->Gshift - fmt->Gloss),
+                           (key & fmt->Bmask) << (fmt->Bloss - fmt->Bshift));
+
   return 0;
 }