widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #13808
[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