fixed redraw bug if gadget buttons are defined outside viewports
[rocksndiamonds.git] / src / tape.c
index d1d4aa6b6ad5cd8cc8ba3d3b1351e014263bb9dd..6cf797198dcf20bf456c1b76c75f5b1e64d52619 100644 (file)
@@ -596,6 +596,10 @@ void TapeStartRecording(int random_seed)
 
   SetDrawDeactivationMask(REDRAW_NONE);
   audio.sound_deactivated = FALSE;
+
+  // required here to update video display if tape door is closed
+  if (GetDoorState() & DOOR_CLOSE_2)
+    OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
 }
 
 static void TapeStartGameRecording(void)
@@ -1128,9 +1132,9 @@ boolean PlaySolutionTape(void)
 }
 
 
-/* ------------------------------------------------------------------------- *
- * tape autoplay functions
- * ------------------------------------------------------------------------- */
+// ----------------------------------------------------------------------------
+// tape autoplay functions
+// ----------------------------------------------------------------------------
 
 void AutoPlayTape(void)
 {
@@ -1407,7 +1411,8 @@ void RedrawTapeButtons(void)
     RedrawGameButtonsOnTape();
 
   // 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;
 }
 
 void RedrawOrRemapTapeButtons(void)