sdl/sdl_{renderer,texture}.cpp: Do no access (SDL_Surface *)->format->alpha directly.
[supertux.git] / src / video / sdl / sdl_renderer.cpp
index 39e8860..10817f9 100644 (file)
@@ -193,6 +193,12 @@ SDLRenderer::draw_surface(const DrawingRequest& request)
   Uint8 alpha = 0;
   if(request.alpha != 1.0)
   {
+#if SDL_VERSION_ATLEAST(1,3,0)
+    Uint8 tmp;
+    SDL_GetSurfaceAlphaMod (transform, &alpha);
+    tmp = (Uint8) (((double) alpha) * request.alpha + .5);
+    SDL_SetSurfaceAlphaMod (transform, tmp);
+#else
     if(!transform->format->Amask)
     {
       if(transform->flags & SDL_SRCALPHA)
@@ -209,6 +215,7 @@ SDLRenderer::draw_surface(const DrawingRequest& request)
       {
       transform = apply_alpha(transform, request.alpha);
       }*/
+#endif
   }
 
   SDL_BlitSurface(transform, src_rect, screen, &dst_rect);
@@ -288,7 +295,11 @@ SDLRenderer::draw_surface_part(const DrawingRequest& request)
     {
       if(transform->flags & SDL_SRCALPHA)
       {
+#if SDL_VERSION_ATLEAST(1,3,0)
+        SDL_GetSurfaceAlphaMod (transform, &alpha);
+#else
         alpha = transform->format->alpha;
+#endif
       }
       else
       {