fixed redraw bug if gadget buttons are defined outside viewports
[rocksndiamonds.git] / src / game.c
index ad2f231f641f92cc86eb124e2e8a91c4eed6eede..e50017a9bed88bd57f2cc5403b066657abd53ddf 100644 (file)
@@ -3354,7 +3354,7 @@ void InitGame(void)
   SetGameStatus(GAME_MODE_PLAYING);
 
   if (level_editor_test_game)
-    FadeSkipNextFadeIn();
+    FadeSkipNextFadeOut();
   else
     FadeSetEnterScreen();
 
@@ -3365,8 +3365,10 @@ void InitGame(void)
 
   ExpireSoundLoops(TRUE);
 
-  if (!level_editor_test_game)
-    FadeOut(fade_mask);
+  FadeOut(fade_mask);
+
+  if (level_editor_test_game)
+    FadeSkipNextFadeIn();
 
   // needed if different viewport properties defined for playing
   ChangeViewportPropertiesIfNeeded();
@@ -15757,7 +15759,8 @@ static void RedrawGameButtonsExt(boolean on_tape)
       RedrawGadget(game_gadget[i]);
 
   // RedrawGadget() may have set REDRAW_ALL if buttons are defined off-area
-  redraw_mask &= ~REDRAW_ALL;
+  if (redraw_mask & REDRAW_ALL)
+    redraw_mask = REDRAW_FIELD | REDRAW_DOORS;
 }
 
 static void SetGadgetState(struct GadgetInfo *gi, boolean state)