fix: reorder autosave tick to account for weak hardware

This commit is contained in:
sylvessa 2026-04-06 12:24:24 -05:00
parent 034c313ddf
commit 6f72bab867

View file

@ -657,7 +657,7 @@ int main(int argc, char **argv)
break; break;
} }
if (autosaveRequested && app.GetXuiServerAction(kServerActionPad) == eXuiServerAction_Idle) if (autosaveRequested && app.GetXuiServerAction(kServerActionPad) == eXuiServerAction_Idle && !ConsoleSaveFileOriginal::hasPendingBackgroundSave())
{ {
LogWorldIO("autosave completed"); LogWorldIO("autosave completed");
autosaveRequested = false; autosaveRequested = false;
@ -671,7 +671,7 @@ int main(int argc, char **argv)
DWORD now = GetTickCount(); DWORD now = GetTickCount();
if ((LONG)(now - nextAutosaveTick) >= 0) if ((LONG)(now - nextAutosaveTick) >= 0)
{ {
if (app.GetXuiServerAction(kServerActionPad) == eXuiServerAction_Idle) if (app.GetXuiServerAction(kServerActionPad) == eXuiServerAction_Idle && !ConsoleSaveFileOriginal::hasPendingBackgroundSave())
{ {
LogWorldIO("requesting autosave"); LogWorldIO("requesting autosave");
app.SetXuiServerAction(kServerActionPad, eXuiServerAction_AutoSaveGame); app.SetXuiServerAction(kServerActionPad, eXuiServerAction_AutoSaveGame);
@ -687,16 +687,18 @@ int main(int argc, char **argv)
LogInfof("shutdown", "Dedicated server stopped"); LogInfof("shutdown", "Dedicated server stopped");
MinecraftServer *server = MinecraftServer::getInstance(); MinecraftServer *server = MinecraftServer::getInstance();
if (server != NULL) if (server != NULL && !ConsoleSaveFileOriginal::hasPendingBackgroundSave())
{
server->setSaveOnExit(true);
}
if (server != NULL)
{ {
server->setSaveOnExit(true);
LogWorldIO("requesting save before shutdown"); LogWorldIO("requesting save before shutdown");
LogWorldIO("using saveOnExit for shutdown"); LogWorldIO("using saveOnExit for shutdown");
} }
if (ConsoleSaveFileOriginal::hasPendingBackgroundSave())
{
LogWorldIO("Waiting for autosave to complete...");
}
MinecraftServer::HaltServer(); MinecraftServer::HaltServer();
if (g_NetworkManager.ServerStoppedValid()) if (g_NetworkManager.ServerStoppedValid())