fix: reorder autosave tick to account for weak hardware (#1482)

This commit is contained in:
Sylvessa 2026-04-06 12:34:02 -05:00 committed by GitHub
parent 98a86fc69b
commit 413baaceed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

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())