equal
deleted
inserted
replaced
1290 assert(_ts.count == _sl.offs_base); |
1290 assert(_ts.count == _sl.offs_base); |
1291 GetSavegameFormat("memory")->uninit_write(); // clean the memorypool |
1291 GetSavegameFormat("memory")->uninit_write(); // clean the memorypool |
1292 fclose(_sl.fh); |
1292 fclose(_sl.fh); |
1293 |
1293 |
1294 SaveFileDone(); |
1294 SaveFileDone(); |
1295 if (*(bool*)ptr) CloseOTTDThread(); |
|
1296 return true; |
1295 return true; |
1297 } |
1296 } |
1298 |
1297 |
1299 /** |
1298 /** |
1300 * Main Save or Load function where the high-level saveload functions are |
1299 * Main Save or Load function where the high-level saveload functions are |
1362 version = 0; |
1361 version = 0; |
1363 |
1362 |
1364 /* General tactic is to first save the game to memory, then use an available writer |
1363 /* General tactic is to first save the game to memory, then use an available writer |
1365 * to write it to file, either in threaded mode if possible, or single-threaded */ |
1364 * to write it to file, either in threaded mode if possible, or single-threaded */ |
1366 if (mode == SL_SAVE) { /* SAVE game */ |
1365 if (mode == SL_SAVE) { /* SAVE game */ |
1367 bool threaded = true; |
|
1368 fmt = GetSavegameFormat("memory"); // write to memory |
1366 fmt = GetSavegameFormat("memory"); // write to memory |
1369 |
1367 |
1370 _sl.write_bytes = fmt->writer; |
1368 _sl.write_bytes = fmt->writer; |
1371 _sl.excpt_uninit = fmt->uninit_write; |
1369 _sl.excpt_uninit = fmt->uninit_write; |
1372 if (!fmt->init_write()) { |
1370 if (!fmt->init_write()) { |
1379 BeforeSaveGame(); |
1377 BeforeSaveGame(); |
1380 SlSaveChunks(); |
1378 SlSaveChunks(); |
1381 SlWriteFill(); // flush the save buffer |
1379 SlWriteFill(); // flush the save buffer |
1382 |
1380 |
1383 /* Write to file */ |
1381 /* Write to file */ |
1384 if (_network_server || !CreateOTTDThread(&SaveFileToDisk, &threaded)) { |
1382 if (_network_server || !CreateOTTDThread(&SaveFileToDisk, NULL)) { |
1385 DEBUG(misc, 1) ("cannot create savegame thread, reverting to single-threaded mode..."); |
1383 DEBUG(misc, 1) ("cannot create savegame thread, reverting to single-threaded mode..."); |
1386 threaded = false; |
1384 SaveFileToDisk(NULL); |
1387 SaveFileToDisk(&threaded); |
|
1388 } |
1385 } |
1389 |
1386 |
1390 } else { /* LOAD game */ |
1387 } else { /* LOAD game */ |
1391 assert(mode == SL_LOAD); |
1388 assert(mode == SL_LOAD); |
1392 |
1389 |