Avoid performing emergency network save more than once

This commit is contained in:
Jonathan G Rennison
2019-08-22 01:40:28 +01:00
parent 6ce7f22fe6
commit 2e4b1d73d8
2 changed files with 12 additions and 0 deletions

View File

@@ -136,6 +136,7 @@ void ClientNetworkEmergencySave()
{
if (!_settings_client.gui.autosave_on_network_disconnect) return;
if (!_networking) return;
if (!ClientNetworkGameSocketHandler::EmergencySavePossible()) return;
const char *filename = "netsave.sav";
DEBUG(net, 0, "Client: Performing emergency save (%s)", filename);
@@ -344,6 +345,14 @@ void ClientNetworkGameSocketHandler::ClientError(NetworkRecvStatus res)
return true;
}
/* static */ bool ClientNetworkGameSocketHandler::EmergencySavePossible()
{
if (!my_client) return false;
if (my_client->emergency_save_done) return false;
my_client->emergency_save_done = true;
return true;
}
/** Our client's connection. */
ClientNetworkGameSocketHandler * ClientNetworkGameSocketHandler::my_client = nullptr;