From: Holger Schemel Date: Wed, 16 Dec 2020 11:01:50 +0000 (+0100) Subject: fixed bug with using wrong draw buffer after request if game has ended X-Git-Tag: 4.2.2.0~19 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=926cd5be0cd14684d9b15878b32fe4ada50865ea;p=rocksndiamonds.git fixed bug with using wrong draw buffer after request if game has ended --- 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 *);