changeset 2838:00356f22195a

Fixed SDL_SetAlpha compatibility function to match the documentation
author Sam Lantinga <slouken@libsdl.org>
date Sat, 06 Dec 2008 05:49:53 +0000
parents ff8db79a3cc9
children f89700cc9272
files src/SDL_compat.c
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/SDL_compat.c	Sat Dec 06 05:49:08 2008 +0000
+++ b/src/SDL_compat.c	Sat Dec 06 05:49:53 2008 +0000
@@ -686,16 +686,19 @@
 int
 SDL_SetAlpha(SDL_Surface * surface, Uint32 flag, Uint8 value)
 {
-    if (flag & SDL_RLEACCEL) {
-        SDL_SetSurfaceRLE(surface, 1);
-    }
-    if (flag) {
+    if (flag & SDL_SRCALPHA) {
+        /* According to the docs, value is ignored for alpha surfaces */
+        if (surface->format->Amask) {
+            value = 0xFF;
+        }
         SDL_SetSurfaceAlphaMod(surface, value);
         SDL_SetSurfaceBlendMode(surface, SDL_TEXTUREBLENDMODE_BLEND);
     } else {
         SDL_SetSurfaceAlphaMod(surface, 0xFF);
         SDL_SetSurfaceBlendMode(surface, SDL_TEXTUREBLENDMODE_NONE);
     }
+    SDL_SetSurfaceRLE(surface, (flag & SDL_RLEACCEL));
+
     return 0;
 }