X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsdl.c;h=6ac1229fcc3c761fa3b5ba3b2c2e568b928ce038;hb=8b04d496646e102dd15710ba091e2f37cadcec5e;hp=a0232fc9d8571d9e567ceada5691c9a849005e7e;hpb=33816a6d8e5d9898e9cac269b6c5e647b03e5e85;p=rocksndiamonds.git diff --git a/src/libgame/sdl.c b/src/libgame/sdl.c index a0232fc9..6ac1229f 100644 --- a/src/libgame/sdl.c +++ b/src/libgame/sdl.c @@ -1,7 +1,7 @@ /*********************************************************** * Artsoft Retro-Game Library * *----------------------------------------------------------* -* (c) 1994-2002 Artsoft Entertainment * +* (c) 1994-2006 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -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; @@ -63,6 +63,10 @@ static void setFullscreenParameters() static void SDLSetWindowIcon(char *basename) { + /* (setting the window icon on Mac OS X would replace the high-quality + dock icon with the currently smaller (and uglier) icon from file) */ + +#if !defined(PLATFORM_MACOSX) char *filename = getCustomImageFilename(basename); SDL_Surface *surface; @@ -85,6 +89,7 @@ static void SDLSetWindowIcon(char *basename) SDL_MapRGB(surface->format, 0x00, 0x00, 0x00)); SDL_WM_SetIcon(surface, NULL); +#endif } void SDLInitVideoDisplay(void) @@ -235,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; @@ -250,6 +255,7 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen) /* do not try it again */ video.fullscreen_available = FALSE; + success = FALSE; } else @@ -257,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; } } @@ -378,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; @@ -492,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);