diff --git a/soh/soh/SaveManager.cpp b/soh/soh/SaveManager.cpp index 99ec2026c..240f73863 100644 --- a/soh/soh/SaveManager.cpp +++ b/soh/soh/SaveManager.cpp @@ -754,14 +754,18 @@ void SaveManager::SaveFileThreaded(int fileNum, SaveContext* saveContext) { GameInteractor::Instance->ExecuteHooks(fileNum); } -void SaveManager::SaveFile(int fileNum) { +void SaveManager::SaveFile(int fileNum, bool threaded) { if (fileNum == 0xFF) { return; } // Can't think of any time the promise would be needed, so use push_task instead of submit auto saveContext = new SaveContext; memcpy(saveContext, &gSaveContext, sizeof(gSaveContext)); - smThreadPool->push_task_back(&SaveManager::SaveFileThreaded, this, fileNum, saveContext); + if (threaded) { + smThreadPool->push_task_back(&SaveManager::SaveFileThreaded, this, fileNum, saveContext); + } else { + SaveFileThreaded(fileNum, saveContext); + } } void SaveManager::SaveGlobal() { @@ -2135,7 +2139,7 @@ void SaveManager::ConvertFromUnversioned() { static SaveContext saveContextSave = gSaveContext; InitFile(false); CopyV0Save(*file, gSaveContext); - SaveFile(fileNum); + SaveFile(fileNum, false); InitMeta(fileNum); gSaveContext = saveContextSave; } @@ -2156,7 +2160,7 @@ extern "C" void Save_InitFile(int isDebug) { } extern "C" void Save_SaveFile(void) { - SaveManager::Instance->SaveFile(gSaveContext.fileNum); + SaveManager::Instance->SaveFile(gSaveContext.fileNum, true); } extern "C" void Save_SaveGlobal(void) { diff --git a/soh/soh/SaveManager.h b/soh/soh/SaveManager.h index 8b32774e1..d5c8def68 100644 --- a/soh/soh/SaveManager.h +++ b/soh/soh/SaveManager.h @@ -52,7 +52,7 @@ public: void Init(); void InitFile(bool isDebug); - void SaveFile(int fileNum); + void SaveFile(int fileNum, bool threaded); void SaveGlobal(); void LoadFile(int fileNum); bool SaveFile_Exist(int fileNum);