From 9edbd5794767fd1f2ce6d40f30d36345f36bba14 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 22 Apr 2024 14:11:01 -0500 Subject: [PATCH] GUI: disable late render clear on Metal fixes a crash --- src/gui/gui.cpp | 4 ++-- src/gui/settings.cpp | 16 +++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 0e1a80ec5..5dc3c221c 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6455,7 +6455,7 @@ bool FurnaceGUI::loop() { } } - if (!settings.renderClearPos) { + if (!settings.renderClearPos || renderBackend==GUI_BACKEND_METAL) { rend->clear(uiColors[GUI_COLOR_BACKGROUND]); } renderTimeBegin=SDL_GetPerformanceCounter(); @@ -6496,7 +6496,7 @@ bool FurnaceGUI::loop() { } } rend->present(); - if (settings.renderClearPos) { + if (settings.renderClearPos && renderBackend!=GUI_BACKEND_METAL) { rend->clear(uiColors[GUI_COLOR_BACKGROUND]); } swapTimeEnd=SDL_GetPerformanceCounter(); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index ce42eb675..18edb2c22 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -488,13 +488,15 @@ void FurnaceGUI::drawSettings() { settingsChanged=true; } - bool renderClearPosB=settings.renderClearPos; - if (ImGui::Checkbox("Late render clear",&renderClearPosB)) { - settings.renderClearPos=renderClearPosB; - settingsChanged=true; - } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("calls rend->clear() after rend->present(). might reduce UI latency by one frame in some drivers."); + if (settings.renderBackend!=GUI_BACKEND_METAL) { + bool renderClearPosB=settings.renderClearPos; + if (ImGui::Checkbox("Late render clear",&renderClearPosB)) { + settings.renderClearPos=renderClearPosB; + settingsChanged=true; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("calls rend->clear() after rend->present(). might reduce UI latency by one frame in some drivers."); + } } bool powerSaveB=settings.powerSave;