From 721f28cfc4a3428253d069674821fdbafaa58d02 Mon Sep 17 00:00:00 2001 From: Roman Fomin Date: Fri, 16 Feb 2024 14:09:48 +0700 Subject: [PATCH] fix obituaries erasing (#1478) * Always erase Doom widgets * Call HU_Erase from D_Display (restore vanilla code) --- src/d_main.c | 3 +++ src/hu_lib.c | 10 +++++++++- src/hu_stuff.c | 6 +----- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/d_main.c b/src/d_main.c index 41175ad9..d44df70e 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -312,6 +312,9 @@ void D_Display (void) borderdrawcount = 3; } + if (gamestate == GS_LEVEL && gametic) + HU_Erase(); + switch (gamestate) // do buffered drawing { case GS_LEVEL: diff --git a/src/hu_lib.c b/src/hu_lib.c index badcfa49..57354a69 100644 --- a/src/hu_lib.c +++ b/src/hu_lib.c @@ -513,7 +513,15 @@ void HUlib_erase_widget (const hu_widget_t *const w) const int height = m->numlines * f->line_height; const int y = vert_align_widget(w, m, f, w->h_align, w->v_align); - R_VideoErase(0, y, video.unscaledw, height); + if (y > scaledviewy && y < scaledviewy + scaledviewheight - height) + { + R_VideoErase(0, y, scaledviewx, height); + R_VideoErase(scaledviewx + scaledviewwidth, y, scaledviewx, height); + } + else + { + R_VideoErase(0, y, video.unscaledw, height); + } } //---------------------------------------------------------------------------- diff --git a/src/hu_stuff.c b/src/hu_stuff.c index 541b2fa6..e061a2f5 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -1528,10 +1528,7 @@ void HU_Erase(void) w = doom_widget; while (w->multiline) { - if (*w->multiline->on) - { - HUlib_erase_widget(w); - } + HUlib_erase_widget(w); w++; } @@ -1565,7 +1562,6 @@ void HU_Ticker(void) boom_widget = boom_widgets[hud_active]; plr = &players[displayplayer]; // killough 3/7/98 - HU_Erase(); HU_disable_all_widgets(); draw_crispy_hud = false;