fixed crash bug caused by custom loading screen support
authorHolger Schemel <info@artsoft.org>
Fri, 22 Jul 2022 11:28:19 +0000 (13:28 +0200)
committerHolger Schemel <info@artsoft.org>
Fri, 22 Jul 2022 11:28:19 +0000 (13:28 +0200)
src/init.c
src/tools.c
src/tools.h

index 7f9821bf0d1f7a2d53adf17a3c8d20fdf1ba01a5..b2a6367623180705e8a5067c829d005f0b5f9e6d 100644 (file)
@@ -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"
 
 
 #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
   };
index 66f3cf724129c0da00f63558e303a3a8228fadcd..1f1a925de4809b878aa380d0ae5a6d0eda9c7e84 100644 (file)
@@ -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;
index 3413308c8926cfa395c5ea028f6ee191d49e36a0..eddddc0ef1f6afc3119a79b583e495e8b3be7aba 100644 (file)
@@ -108,6 +108,7 @@ void FadeSetDisabled(void);
 void FadeSkipNextFadeIn(void);
 void FadeSkipNextFadeOut(void);
 
+Bitmap *getBitmapFromGraphicOrDefault(int, int);
 Bitmap *getGlobalBorderBitmapFromStatus(int);
 
 void ClearField(void);