← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/bug-1678987-save-handler into lp:widelands

 

GunChleoc has proposed merging lp:~widelands-dev/widelands/bug-1678987-save-handler into lp:widelands.

Requested reviews:
  Widelands Developers (widelands-dev)

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug-1678987-save-handler/+merge/349096

Just for the AppVeyor build - do not review yet.
-- 
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-1678987-save-handler into lp:widelands.
=== modified file 'src/logic/save_handler.cc'
--- src/logic/save_handler.cc	2018-04-07 16:59:00 +0000
+++ src/logic/save_handler.cc	2018-07-08 16:13:43 +0000
@@ -49,7 +49,8 @@
      autosave_filename_(kAutosavePrefix),
      fs_type_(FileSystem::ZIP),
      autosave_interval_in_ms_(kDefaultAutosaveInterval * 60 * 1000),
-     number_of_rolls_(5) {
+     number_of_rolls_(5),
+	 is_busy_saving_(false) {
 }
 
 void SaveHandler::roll_save_files(const std::string& filename) {
@@ -111,6 +112,7 @@
 bool SaveHandler::save_and_handle_error(Widelands::Game& game,
                                         const std::string& complete_filename,
                                         const std::string& backup_filename) {
+	is_busy_saving_ = true;
 	std::string error;
 	bool result = save_game(game, complete_filename, &error);
 	if (!result) {
@@ -131,6 +133,7 @@
 		if (backup_filename.length() > 0 && g_fs->file_exists(backup_filename))
 			g_fs->fs_unlink(backup_filename);
 	}
+	is_busy_saving_ = false;
 	return result;
 }
 
@@ -138,6 +141,10 @@
  * Check if autosave is needed and allowed or save was requested by user.
  */
 void SaveHandler::think(Widelands::Game& game) {
+	if (is_busy_saving_ && !save_requested_) {
+		log("NOCOM busy saving!\n");
+		return;
+	}
 
 	if (!allow_saving_ || game.is_replay()) {
 		return;

=== modified file 'src/logic/save_handler.h'
--- src/logic/save_handler.h	2018-04-07 16:59:00 +0000
+++ src/logic/save_handler.h	2018-07-08 16:13:43 +0000
@@ -80,6 +80,8 @@
 	FileSystem::Type fs_type_;
 	int32_t autosave_interval_in_ms_;
 	int32_t number_of_rolls_;  // For rolling file update
+	// So we can count save interval from end of save rather than start of save
+	bool is_busy_saving_;
 
 	void initialize(uint32_t gametime);
 	void roll_save_files(const std::string& filename);


Follow ups