fixed bug with using wrong draw buffer after request if game has ended
[rocksndiamonds.git] / src / tools.c
index de19e464567463177202220a0734e57367be1607..a042e88fe91f7c84bcb914da569720cd63036612 100644 (file)
@@ -462,6 +462,11 @@ void SetDrawtoField(int mode)
   }
 }
 
+int GetDrawtoField(void)
+{
+  return (drawto_field == fieldbuffer ? DRAW_TO_FIELDBUFFER : DRAW_TO_BACKBUFFER);
+}
+
 static void RedrawPlayfield_RND(void)
 {
   if (game.envelope_active)
@@ -4212,6 +4217,7 @@ static int RequestHandleEvents(unsigned int req_state)
 {
   boolean game_just_ended = (game_status == GAME_MODE_PLAYING &&
                             checkGameEnded());
+  int draw_buffer_last = GetDrawtoField();
   int width  = request.width;
   int height = request.height;
   int sx, sy;
@@ -4234,9 +4240,7 @@ static int RequestHandleEvents(unsigned int req_state)
   {
     if (game_just_ended)
     {
-      // the MM game engine does not use a special (scrollable) field buffer
-      if (level.game_engine_type != GAME_ENGINE_TYPE_MM)
-       SetDrawtoField(DRAW_TO_FIELDBUFFER);
+      SetDrawtoField(draw_buffer_last);
 
       HandleGameActions();
 
@@ -4521,6 +4525,8 @@ static int RequestHandleEvents(unsigned int req_state)
     BackToFront();
   }
 
+  SetDrawtoField(draw_buffer_last);
+
   game.request_active = FALSE;
 
   return result;