fixed screen specific global animations to stop when fading screens
[rocksndiamonds.git] / src / tools.c
index 4a5243602014051440e8ae14fca474bce98b5c9e..5bd1569946b0db561d25fd28cd54818677bc4eb8 100644 (file)
@@ -628,6 +628,20 @@ static void FadeExt(int fade_mask, int fade_mode, int fade_type)
   redraw_mask &= ~fade_mask;
 }
 
+static void SetAnimStatus_BeforeFadingOut()
+{
+  global.anim_status = GAME_MODE_PSEUDO_FADING;
+}
+
+static void SetAnimStatus_AfterFadingIn()
+{
+  global.anim_status = global.anim_status_next;
+
+  // force update of global animation status in case of rapid screen changes
+  redraw_mask = REDRAW_ALL;
+  BackToFront();
+}
+
 void FadeIn(int fade_mask)
 {
 #if 1
@@ -644,12 +658,12 @@ void FadeIn(int fade_mask)
   FADE_SXSIZE = FULL_SXSIZE;
   FADE_SYSIZE = FULL_SYSIZE;
 
-  global.anim_status = global.anim_status_next;
+  SetAnimStatus_AfterFadingIn();
 }
 
 void FadeOut(int fade_mask)
 {
-  global.anim_status = GAME_MODE_PSEUDO_FADING;
+  SetAnimStatus_BeforeFadingOut();
 
 #if 0
   DrawMaskedBorder(REDRAW_ALL);