fixed crash bug with masked blitting in headless mode
[rocksndiamonds.git] / src / libgame / system.c
index 2fad22274b84e09fc5bdac61421b860f511265ab..e83df10bb1250a83e405380cd3189c77d8006bd4 100644 (file)
@@ -121,7 +121,7 @@ void InitNetworkInfo(boolean enabled, boolean connected, boolean serveronly,
   network.is_server_thread = FALSE;
 }
 
-void InitRuntimeInfo()
+void InitRuntimeInfo(void)
 {
 #if defined(HAS_TOUCH_DEVICE)
   runtime.uses_touch_device = TRUE;
@@ -599,15 +599,20 @@ void FreeBitmap(Bitmap *bitmap)
   free(bitmap);
 }
 
+void ResetBitmapAlpha(Bitmap *bitmap)
+{
+  bitmap->alpha[0][0] = -1;
+  bitmap->alpha[0][1] = -1;
+  bitmap->alpha[1][0] = -1;
+  bitmap->alpha[1][1] = -1;
+  bitmap->alpha_next_blit = -1;
+}
+
 Bitmap *CreateBitmapStruct(void)
 {
   Bitmap *new_bitmap = checked_calloc(sizeof(Bitmap));
 
-  new_bitmap->alpha[0][0] = -1;
-  new_bitmap->alpha[0][1] = -1;
-  new_bitmap->alpha[1][0] = -1;
-  new_bitmap->alpha[1][1] = -1;
-  new_bitmap->alpha_next_blit = -1;
+  ResetBitmapAlpha(new_bitmap);
 
   return new_bitmap;
 }
@@ -933,6 +938,12 @@ void BlitBitmapMasked(Bitmap *src_bitmap, Bitmap *dst_bitmap,
                      int src_x, int src_y, int width, int height,
                      int dst_x, int dst_y)
 {
+  if (program.headless)
+    return;
+
+  if (src_bitmap == NULL || dst_bitmap == NULL)
+    return;
+
   if (DrawingDeactivated(dst_x, dst_y))
     return;