prepare for deferred config saving

issue #1723
This commit is contained in:
tildearrow 2024-03-14 01:58:43 -05:00
parent 3e87c0a0df
commit d700bfca08
4 changed files with 12 additions and 6 deletions

View file

@ -4013,11 +4013,13 @@ bool DivEngine::init() {
return true;
}
bool DivEngine::quit() {
bool DivEngine::quit(bool saveConfig) {
deinitAudioBackend();
quitDispatch();
logI("saving config.");
saveConf();
if (saveConfig) {
logI("saving config.");
saveConf();
}
active=false;
for (int i=0; i<DIV_MAX_OUTPUTS; i++) {
if (oscBuf[i]!=NULL) delete[] oscBuf[i];

View file

@ -220,7 +220,7 @@ struct DivDispatchContainer {
void fillBuf(size_t runtotal, size_t offset, size_t size);
void clear();
void init(DivSystem sys, DivEngine* eng, int chanCount, double gotRate, const DivConfig& flags, bool isRender=false);
void quit();
void quit(bool saveConfig=true);
DivDispatchContainer():
dispatch(NULL),
bbInLen(0),

View file

@ -7242,8 +7242,12 @@ void FurnaceGUI::commitState() {
}
}
bool FurnaceGUI::finish() {
bool FurnaceGUI::finish(bool saveConfig) {
commitState();
if (saveConfig) {
logI("saving config.");
saveConf();
}
rend->quitGUI();
ImGui_ImplSDL2_Shutdown();
quitRender();

View file

@ -2735,7 +2735,7 @@ class FurnaceGUI {
bool detectOutOfBoundsWindow(SDL_Rect& failing);
int processEvent(SDL_Event* ev);
bool loop();
bool finish();
bool finish(bool saveConfig=false);
bool init();
bool requestQuit();
FurnaceGUI();