From b7e63d2ee88378ee708ceddbea3392d46f12e919 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 18 Jun 2025 03:01:04 -0500 Subject: [PATCH] GUI: possibly fix hang after factory reset issue #2576 --- src/engine/configEngine.cpp | 2 -- src/gui/gui.cpp | 18 +++++++++++------- src/gui/gui.h | 1 + 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/engine/configEngine.cpp b/src/engine/configEngine.cpp index 1f3f34263..f7cd39f84 100644 --- a/src/engine/configEngine.cpp +++ b/src/engine/configEngine.cpp @@ -193,6 +193,4 @@ void DivEngine::factoryReset() { if (i>0) path+=fmt::sprintf(".%d",i); deleteFile(path.c_str()); } - - exit(0); } diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 55117f2b3..f56a982ea 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6573,6 +6573,7 @@ bool FurnaceGUI::loop() { if (ImGui::Button(_("Yes"))) { e->factoryReset(); quit=true; + quitNoSave=true; ImGui::CloseCurrentPopup(); } popDestColor(); @@ -8378,13 +8379,15 @@ void FurnaceGUI::commitState(DivConfig& conf) { } bool FurnaceGUI::finish(bool saveConfig) { - commitState(e->getConfObject()); - if (userPresetsOpen) { - saveUserPresets(true); - } - if (saveConfig) { - logI("saving config."); - e->saveConf(); + if (!quitNoSave) { + commitState(e->getConfObject()); + if (userPresetsOpen) { + saveUserPresets(true); + } + if (saveConfig) { + logI("saving config."); + e->saveConf(); + } } rend->quitGUI(); ImGui_ImplSDL2_Shutdown(); @@ -8484,6 +8487,7 @@ FurnaceGUI::FurnaceGUI(): replacePendingSample(false), displayExportingROM(false), displayExportingCS(false), + quitNoSave(false), changeCoarse(false), mobileEdit(false), killGraphics(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index a50b21c92..41d979142 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1677,6 +1677,7 @@ class FurnaceGUI { bool displayPendingIns, pendingInsSingle, displayPendingRawSample, snesFilterHex, modTableHex, displayEditString; bool displayPendingSamples, replacePendingSample; bool displayExportingROM, displayExportingCS; + bool quitNoSave; bool changeCoarse; bool mobileEdit; bool killGraphics;