X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsdl.c;h=6ac1229fcc3c761fa3b5ba3b2c2e568b928ce038;hb=8b04d496646e102dd15710ba091e2f37cadcec5e;hp=d06cca94da5646c067e79efca76810e78daa0209;hpb=a5f961c9d6d0ef7f1b69478b6ec20fbac09548b9;p=rocksndiamonds.git diff --git a/src/libgame/sdl.c b/src/libgame/sdl.c index d06cca94..6ac1229f 100644 --- a/src/libgame/sdl.c +++ b/src/libgame/sdl.c @@ -35,12 +35,12 @@ static int fullscreen_yoffset; static int video_xoffset; static int video_yoffset; -static void setFullscreenParameters() +static void setFullscreenParameters(char *fullscreen_mode_string) { struct ScreenModeInfo *fullscreen_mode; int i; - fullscreen_mode = get_screen_mode_from_string(setup.fullscreen_mode); + fullscreen_mode = get_screen_mode_from_string(fullscreen_mode_string); if (fullscreen_mode == NULL) return; @@ -240,7 +240,7 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen) if (fullscreen && !video.fullscreen_enabled && video.fullscreen_available) { - setFullscreenParameters(); + setFullscreenParameters(setup.fullscreen_mode); video_xoffset = fullscreen_xoffset; video_yoffset = fullscreen_yoffset; @@ -255,6 +255,7 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen) /* do not try it again */ video.fullscreen_available = FALSE; + success = FALSE; } else @@ -262,6 +263,8 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen) (*backbuffer)->surface = new_surface; video.fullscreen_enabled = TRUE; + video.fullscreen_mode_current = setup.fullscreen_mode; + success = TRUE; } } @@ -383,7 +386,8 @@ void SDLFillRectangle(Bitmap *dst_bitmap, int x, int y, int width, int height, } void SDLFadeRectangle(Bitmap *bitmap_cross, int x, int y, int width, int height, - int fade_mode, int fade_delay, int post_delay) + int fade_mode, int fade_delay, int post_delay, + void (*draw_border_function)(void)) { static boolean initialization_needed = TRUE; static SDL_Surface *surface_source = NULL; @@ -497,6 +501,9 @@ void SDLFadeRectangle(Bitmap *bitmap_cross, int x, int y, int width, int height, SDL_SetAlpha(surface_target, SDL_SRCALPHA, alpha_final); SDL_BlitSurface(surface_target, &src_rect, surface_screen, &dst_rect); + if (draw_border_function != NULL) + draw_border_function(); + #if 1 /* only update the region of the screen that is affected from fading */ SDL_UpdateRect(surface_screen, dst_x, dst_y, width, height);