From: Holger Schemel Date: Wed, 29 Jun 2016 18:48:37 +0000 (+0200) Subject: cleanup of function for creating opaque surface from masked surface X-Git-Tag: 4.0.0.0~55 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=36b0cfea2bb95eee88f24e21c85324dd87eb19f9;p=rocksndiamonds.git cleanup of function for creating opaque surface from masked surface --- diff --git a/src/libgame/sdl.c b/src/libgame/sdl.c index 60b40b3a..abb200fb 100644 --- a/src/libgame/sdl.c +++ b/src/libgame/sdl.c @@ -2180,22 +2180,23 @@ SDL_Surface *zoomSurface(SDL_Surface *src, int dst_width, int dst_height) return zoom_dst; } -static void SetOpaqueBitmapSurface(Bitmap *bitmap) +static SDL_Surface *SDLGetOpaqueSurface(SDL_Surface *surface) { - if (bitmap == NULL) - return; + SDL_Surface *new_surface; - if (bitmap->surface) - SDL_FreeSurface(bitmap->surface); + if (surface == NULL) + return NULL; - if ((bitmap->surface = SDLGetNativeSurface(bitmap->surface_masked)) == NULL) + if ((new_surface = SDLGetNativeSurface(surface)) == NULL) Error(ERR_EXIT, "SDL_DisplayFormat() failed"); /* remove alpha channel from native non-transparent surface, if defined */ - SDLSetAlpha(bitmap->surface, FALSE, 0); + SDLSetAlpha(new_surface, FALSE, 0); /* remove transparent color from native non-transparent surface, if defined */ - SDL_SetColorKey(bitmap->surface, UNSET_TRANSPARENT_PIXEL, 0); + SDL_SetColorKey(new_surface, UNSET_TRANSPARENT_PIXEL, 0); + + return new_surface; } Bitmap *SDLZoomBitmap(Bitmap *src_bitmap, int dst_width, int dst_height) @@ -2221,7 +2222,7 @@ Bitmap *SDLZoomBitmap(Bitmap *src_bitmap, int dst_width, int dst_height) SDLGetColorKey(src_bitmap->surface_masked)); /* create native non-transparent surface for opaque blitting */ - SetOpaqueBitmapSurface(dst_bitmap); + dst_bitmap->surface = SDLGetOpaqueSurface(dst_bitmap->surface_masked); return dst_bitmap; }