From 1d7af05c874d80ee2102ce1420bc99c7c26cdbb5 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Fri, 22 Jul 2022 13:28:19 +0200 Subject: [PATCH] fixed crash bug caused by custom loading screen support --- src/init.c | 21 +++++++++++++++++---- src/tools.c | 2 +- src/tools.h | 1 + 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/init.c b/src/init.c index 7f9821bf..b2a63676 100644 --- a/src/init.c +++ b/src/init.c @@ -37,6 +37,7 @@ #define CONFIG_TOKEN_GLOBAL_BUSY_INITIAL "global.busy_initial" #define CONFIG_TOKEN_GLOBAL_BUSY "global.busy" #define CONFIG_TOKEN_GLOBAL_BUSY_PLAYFIELD "global.busy_playfield" +#define CONFIG_TOKEN_BACKGROUND "background" #define CONFIG_TOKEN_BACKGROUND_LOADING_INITIAL "background.LOADING_INITIAL" #define CONFIG_TOKEN_BACKGROUND_LOADING "background.LOADING" @@ -46,10 +47,11 @@ #define NUM_INITIAL_IMAGES_BUSY 3 -#define INITIAL_IMG_BACKGROUND_LOADING_INITIAL 3 -#define INITIAL_IMG_BACKGROUND_LOADING 4 +#define INITIAL_IMG_BACKGROUND 3 +#define INITIAL_IMG_BACKGROUND_LOADING_INITIAL 4 +#define INITIAL_IMG_BACKGROUND_LOADING 5 -#define NUM_INITIAL_IMAGES 5 +#define NUM_INITIAL_IMAGES 6 static struct FontBitmapInfo font_initial[NUM_INITIAL_FONTS]; @@ -108,6 +110,16 @@ static int copy_properties[][5] = static int get_graphic_parameter_value(char *, char *, int); +static Bitmap *getLoadingBackgroundBitmap(int graphic) +{ + return getBitmapFromGraphicOrDefault(graphic, INITIAL_IMG_BACKGROUND); +} + +static void SetLoadingWindowBackgroundImage(int graphic) +{ + SetWindowBackgroundBitmap(getLoadingBackgroundBitmap(graphic)); +} + static void SetLoadingBackgroundImage(void) { struct GraphicInfo *graphic_info_last = graphic_info; @@ -120,7 +132,7 @@ static void SetLoadingBackgroundImage(void) SetDrawDeactivationMask(REDRAW_NONE); SetDrawBackgroundMask(REDRAW_ALL); - SetWindowBackgroundImage(background_image); + SetLoadingWindowBackgroundImage(background_image); graphic_info = graphic_info_last; } @@ -5671,6 +5683,7 @@ static void InitGfx(void) CONFIG_TOKEN_GLOBAL_BUSY_INITIAL, CONFIG_TOKEN_GLOBAL_BUSY, CONFIG_TOKEN_GLOBAL_BUSY_PLAYFIELD, + CONFIG_TOKEN_BACKGROUND, CONFIG_TOKEN_BACKGROUND_LOADING_INITIAL, CONFIG_TOKEN_BACKGROUND_LOADING }; diff --git a/src/tools.c b/src/tools.c index 66f3cf72..1f1a925d 100644 --- a/src/tools.c +++ b/src/tools.c @@ -1110,7 +1110,7 @@ static int getGlobalGameStatus(int status) status); } -static Bitmap *getBitmapFromGraphicOrDefault(int graphic, int default_graphic) +Bitmap *getBitmapFromGraphicOrDefault(int graphic, int default_graphic) { if (graphic == IMG_UNDEFINED) return NULL; diff --git a/src/tools.h b/src/tools.h index 3413308c..eddddc0e 100644 --- a/src/tools.h +++ b/src/tools.h @@ -108,6 +108,7 @@ void FadeSetDisabled(void); void FadeSkipNextFadeIn(void); void FadeSkipNextFadeOut(void); +Bitmap *getBitmapFromGraphicOrDefault(int, int); Bitmap *getGlobalBorderBitmapFromStatus(int); void ClearField(void); -- 2.34.1