(svn r2908) If threaded saving fails or does not happen, sending subsequent messages might hang ottd. So don't send them :)

This commit is contained in:
Darkvater 2005-09-02 22:22:02 +00:00
parent 620f36acb6
commit 40997f25e9

View File

@ -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;
}