From 92270500e990b2039049ad0dec842a7f5a27d32a Mon Sep 17 00:00:00 2001 From: Darkvater Date: Fri, 2 Sep 2005 22:22:02 +0000 Subject: [PATCH] (svn r2908) If threaded saving fails or does not happen, sending subsequent messages might hang ottd. So don't send them :) --- saveload.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/saveload.c b/saveload.c index 88c8a69c4a..bbf39aa458 100644 --- a/saveload.c +++ b/saveload.c @@ -1283,6 +1283,8 @@ void SaveFileError(void) SaveFileDone(); } +static Thread* save_thread; + /** We have written the whole game into memory, _save_pool, now find * and appropiate compressor and start writing to file. */ @@ -1294,7 +1296,7 @@ static void* SaveFileToDisk(void *arg) static byte *tmp = NULL; uint32 hdr[2]; - OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_START); + if (save_thread != NULL) OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_START); tmp = _sl.buf; @@ -1341,13 +1343,10 @@ static void* SaveFileToDisk(void *arg) GetSavegameFormat("memory")->uninit_write(); // clean the memorypool fclose(_sl.fh); - OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_DONE); + if (save_thread != NULL) OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_DONE); return NULL; } - -static Thread* save_thread; - void WaitTillSaved(void) { OTTDJoinThread(save_thread); @@ -1413,7 +1412,7 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode) ShowInfoF("Load game failed: %s.", _sl.excpt_msg); return SL_REINIT; } - + ShowInfoF("Save game failed: %s.", _sl.excpt_msg); return SL_ERROR; }