X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsdl.c;h=732fc9be178044998461d4b429d32185dc4bd439;hb=18f04ed2930c70cce6231148945cc24a1c662041;hp=e478e8aaddb27df22630345f5385705f00492bdd;hpb=24101bdeee0ac963cfd48b5220f6d9b0188a6f69;p=rocksndiamonds.git diff --git a/src/libgame/sdl.c b/src/libgame/sdl.c index e478e8aa..732fc9be 100644 --- a/src/libgame/sdl.c +++ b/src/libgame/sdl.c @@ -15,6 +15,7 @@ #include "sound.h" #include "joystick.h" #include "misc.h" +#include "setup.h" #if defined(TARGET_SDL) @@ -60,6 +61,32 @@ static void setFullscreenParameters() } } +static void SDLSetWindowIcon(char *basename) +{ + char *filename = getCustomImageFilename(basename); + SDL_Surface *surface; + + if (filename == NULL) + { + Error(ERR_WARN, "SDLSetWindowIcon(): cannot find file '%s'", basename); + + return; + } + + if ((surface = IMG_Load(filename)) == NULL) + { + Error(ERR_WARN, "IMG_Load() failed: %s", SDL_GetError()); + + return; + } + + /* set transparent color */ + SDL_SetColorKey(surface, SDL_SRCCOLORKEY, + SDL_MapRGB(surface->format, 0x00, 0x00, 0x00)); + + SDL_WM_SetIcon(surface, NULL); +} + void SDLInitVideoDisplay(void) { putenv("SDL_VIDEO_CENTERED=1"); @@ -169,6 +196,9 @@ void SDLInitVideoBuffer(DrawBuffer **backbuffer, DrawWindow **window, } } + /* set window icon */ + SDLSetWindowIcon(program.sdl_icon_filename); + /* open SDL video output device (window or fullscreen mode) */ if (!SDLSetVideoMode(backbuffer, fullscreen)) Error(ERR_EXIT, "setting video mode failed"); @@ -1465,6 +1495,7 @@ Bitmap *SDLLoadImage(char *filename) if ((sdl_image_tmp = IMG_Load(filename)) == NULL) { SetError("IMG_Load(): %s", SDL_GetError()); + return NULL; } @@ -1472,6 +1503,7 @@ Bitmap *SDLLoadImage(char *filename) if ((new_bitmap->surface = SDL_DisplayFormat(sdl_image_tmp)) == NULL) { SetError("SDL_DisplayFormat(): %s", SDL_GetError()); + return NULL; } @@ -1481,6 +1513,7 @@ Bitmap *SDLLoadImage(char *filename) if ((new_bitmap->surface_masked = SDL_DisplayFormat(sdl_image_tmp)) == NULL) { SetError("SDL_DisplayFormat(): %s", SDL_GetError()); + return NULL; }