X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsdl.c;h=d11636646c90b0e9ac913b494a993a9464e535ec;hb=bb8e355174a3ab8cc4b422dbb040f0e048d2995b;hp=9b4e0cf4352a5afe5f0ae2859820178a8a689869;hpb=8ae535c1c76e1c33572afbcd4b2d3d9c3d7ba63e;p=rocksndiamonds.git diff --git a/src/libgame/sdl.c b/src/libgame/sdl.c index 9b4e0cf4..d1163664 100644 --- a/src/libgame/sdl.c +++ b/src/libgame/sdl.c @@ -53,7 +53,7 @@ void SDLLimitScreenUpdates(boolean enable) static void UpdateScreen(SDL_Rect *rect) { static unsigned int update_screen_delay = 0; - unsigned int update_screen_delay_value = 20; /* (milliseconds) */ + unsigned int update_screen_delay_value = 50; /* (milliseconds) */ SDL_Surface *screen = backbuffer->surface; if (limit_screen_updates && @@ -278,15 +278,23 @@ boolean SDLSetNativeSurface(SDL_Surface **surface) SDL_Surface *SDLGetNativeSurface(SDL_Surface *surface) { + SDL_PixelFormat format; SDL_Surface *new_surface; if (surface == NULL) return NULL; if (backbuffer && backbuffer->surface) - new_surface = SDL_ConvertSurface(surface, backbuffer->surface->format, 0); + { + format = *backbuffer->surface->format; + format.Amask = surface->format->Amask; // keep alpha channel + } else - new_surface = SDL_ConvertSurface(surface, surface->format, 0); + { + format = *surface->format; + } + + new_surface = SDL_ConvertSurface(surface, &format, 0); if (new_surface == NULL) Error(ERR_EXIT, "SDL_ConvertSurface() failed: %s", SDL_GetError()); @@ -2462,8 +2470,9 @@ Bitmap *SDLLoadImage(char *filename) UPDATE_BUSY_STATE(); /* create native transparent surface for current image */ - SDL_SetColorKey(sdl_image_tmp, SET_TRANSPARENT_PIXEL, - SDL_MapRGB(sdl_image_tmp->format, 0x00, 0x00, 0x00)); + if (sdl_image_tmp->format->Amask == 0) + SDL_SetColorKey(sdl_image_tmp, SET_TRANSPARENT_PIXEL, + SDL_MapRGB(sdl_image_tmp->format, 0x00, 0x00, 0x00)); if ((new_bitmap->surface_masked = SDLGetNativeSurface(sdl_image_tmp)) == NULL) {