From 926cd5be0cd14684d9b15878b32fe4ada50865ea Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Wed, 16 Dec 2020 12:01:50 +0100 Subject: [PATCH] fixed bug with using wrong draw buffer after request if game has ended --- src/tools.c | 12 +++++++++--- src/tools.h | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/tools.c b/src/tools.c index de19e464..a042e88f 100644 --- a/src/tools.c +++ b/src/tools.c @@ -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; diff --git a/src/tools.h b/src/tools.h index a58888be..de7bb467 100644 --- a/src/tools.h +++ b/src/tools.h @@ -85,6 +85,7 @@ void DrawMaskedBorderToTarget(int); void DrawTileCursor(int); void SetDrawtoField(int); +int GetDrawtoField(void); void RedrawPlayfield(void); void BlitScreenToBitmapExt_RND(Bitmap *, int, int); void BlitScreenToBitmap_RND(Bitmap *); -- 2.34.1