diff --git a/SourceX/DiabloUI/credits.cpp b/SourceX/DiabloUI/credits.cpp index e8404f695..58cf73e09 100644 --- a/SourceX/DiabloUI/credits.cpp +++ b/SourceX/DiabloUI/credits.cpp @@ -208,6 +208,7 @@ void CreditsRenderer::Render() return; prev_offset_y_ = offset_y; + SDL_FillRect(GetOutputSurface(), NULL, 0x000000); DrawArt(PANEL_LEFT + 0, 0, &ArtBackground); if (font == NULL) return; diff --git a/SourceX/DiabloUI/diabloui.cpp b/SourceX/DiabloUI/diabloui.cpp index 3e00d5bda..78deca4a2 100644 --- a/SourceX/DiabloUI/diabloui.cpp +++ b/SourceX/DiabloUI/diabloui.cpp @@ -606,6 +606,12 @@ void DrawSelector(const SDL_Rect &rect) DrawArt(rect.x + rect.w - art->w(), y, art, frame); } +void UiClearScreen() +{ + if (SCREEN_WIDTH > 640) // Background size + SDL_FillRect(GetOutputSurface(), NULL, 0x000000); +} + void UiPollAndRender() { SDL_Event event; diff --git a/SourceX/DiabloUI/diabloui.h b/SourceX/DiabloUI/diabloui.h index f76b6ed3a..543b50c2c 100644 --- a/SourceX/DiabloUI/diabloui.h +++ b/SourceX/DiabloUI/diabloui.h @@ -56,6 +56,7 @@ void UiFocusNavigationEsc(); void UiFocusNavigationYesNo(); void UiInitList(int min, int max, void (*fnFocus)(int value), void (*fnSelect)(int value), void (*fnEsc)(), UiItem *items, int size, bool wraps = false, bool (*fnYesNo)() = NULL); void UiInitScrollBar(UiScrollBar *ui_sb, std::size_t viewport_size, const std::size_t *current_offset); +void UiClearScreen(); void UiPollAndRender(); void UiRenderItems(UiItem *items, std::size_t size); diff --git a/SourceX/DiabloUI/mainmenu.cpp b/SourceX/DiabloUI/mainmenu.cpp index 7af5f56f1..95c3234a4 100644 --- a/SourceX/DiabloUI/mainmenu.cpp +++ b/SourceX/DiabloUI/mainmenu.cpp @@ -70,6 +70,7 @@ BOOL UiMainMenuDialog(char *name, int *pdwResult, void (*fnSound)(char *file), i mainmenu_restart_repintro(); // for automatic starts while (MainMenuResult == 0) { + UiClearScreen(); UiPollAndRender(); if (!gbSpawned && SDL_GetTicks() >= dwAttractTicks) { MainMenuResult = MAINMENU_ATTRACT_MODE; diff --git a/SourceX/DiabloUI/progress.cpp b/SourceX/DiabloUI/progress.cpp index db6c9ab49..85463ee57 100644 --- a/SourceX/DiabloUI/progress.cpp +++ b/SourceX/DiabloUI/progress.cpp @@ -66,6 +66,7 @@ void progress_Free() void progress_Render(BYTE progress) { + SDL_FillRect(GetOutputSurface(), NULL, 0x000000); DrawArt(0, 0, &ArtBackground); int x = GetCenterOffset(280); diff --git a/SourceX/DiabloUI/selconn.cpp b/SourceX/DiabloUI/selconn.cpp index 5df4cfa73..ae92f28da 100644 --- a/SourceX/DiabloUI/selconn.cpp +++ b/SourceX/DiabloUI/selconn.cpp @@ -116,6 +116,7 @@ int UiSelectProvider( selconn_ReturnValue = true; selconn_EndMenu = false; while (!selconn_EndMenu) { + UiClearScreen(); UiPollAndRender(); } selconn_Free(); diff --git a/SourceX/DiabloUI/selgame.cpp b/SourceX/DiabloUI/selgame.cpp index 27cd0ee98..48c2c9ac2 100644 --- a/SourceX/DiabloUI/selgame.cpp +++ b/SourceX/DiabloUI/selgame.cpp @@ -285,6 +285,7 @@ int UiSelectGame(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_in selgame_endMenu = false; while (!selgame_endMenu) { + UiClearScreen(); UiPollAndRender(); } selgame_Free(); diff --git a/SourceX/DiabloUI/selhero.cpp b/SourceX/DiabloUI/selhero.cpp index d5e130972..d279dd5d6 100644 --- a/SourceX/DiabloUI/selhero.cpp +++ b/SourceX/DiabloUI/selhero.cpp @@ -367,6 +367,7 @@ BOOL UiSelHeroDialog( selhero_endMenu = false; while (!selhero_endMenu && !selhero_navigateYesNo) { + UiClearScreen(); UiRenderItems(SELHERO_DIALOG, size(SELHERO_DIALOG)); UiPollAndRender(); } diff --git a/SourceX/DiabloUI/selok.cpp b/SourceX/DiabloUI/selok.cpp index 72af8bfa1..6e2745c90 100644 --- a/SourceX/DiabloUI/selok.cpp +++ b/SourceX/DiabloUI/selok.cpp @@ -75,6 +75,7 @@ void UiSelOkDialog(const char *title, const char *body, bool background) selok_endMenu = false; while (!selok_endMenu) { + UiClearScreen(); UiRenderItems(items, itemCnt); UiPollAndRender(); } diff --git a/SourceX/DiabloUI/selyesno.cpp b/SourceX/DiabloUI/selyesno.cpp index e97871b5d..cc938fd74 100644 --- a/SourceX/DiabloUI/selyesno.cpp +++ b/SourceX/DiabloUI/selyesno.cpp @@ -55,6 +55,7 @@ bool UiSelHeroYesNoDialog(const char *title, const char *body) selyesno_value = true; selyesno_endMenu = false; while (!selyesno_endMenu) { + UiClearScreen(); UiRenderItems(SELYESNO_DIALOG, size(SELYESNO_DIALOG)); UiPollAndRender(); }