diff options
author | rubidium <rubidium@openttd.org> | 2008-04-14 19:54:33 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-04-14 19:54:33 +0000 |
commit | 12188e7a5dde4cdd4304b3e738b7905e55f3ad9a (patch) | |
tree | a38226d767be0babf008f3304e7a61a4a00af2aa /src/saveload.cpp | |
parent | a8008db23daf504af9f313ff0c53c5b89e756e05 (diff) | |
download | openttd-12188e7a5dde4cdd4304b3e738b7905e55f3ad9a.tar.xz |
(svn r12706) -Merge: the thread rewrite from NoAI. The rewrite makes the threading we have better extendable.
Diffstat (limited to 'src/saveload.cpp')
-rw-r--r-- | src/saveload.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/saveload.cpp b/src/saveload.cpp index cfcbab3c5..00713718b 100644 --- a/src/saveload.cpp +++ b/src/saveload.cpp @@ -1499,7 +1499,7 @@ void SaveFileError() SaveFileDone(); } -static OTTDThread* save_thread; +static ThreadObject *save_thread; /** We have written the whole game into memory, _Savegame_pool, now find * and appropiate compressor and start writing to file. @@ -1561,7 +1561,7 @@ static SaveOrLoadResult SaveFileToDisk(bool threaded) } } -static void* SaveFileToDiskThread(void *arg) +static void * CDECL SaveFileToDiskThread(void *arg) { SaveFileToDisk(true); return NULL; @@ -1569,7 +1569,9 @@ static void* SaveFileToDiskThread(void *arg) void WaitTillSaved() { - OTTDJoinThread(save_thread); + if (save_thread == NULL) return; + + save_thread->Join(); save_thread = NULL; } @@ -1641,7 +1643,7 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb) SaveFileStart(); if (_network_server || - (save_thread = OTTDCreateThread(&SaveFileToDiskThread, NULL)) == NULL) { + (save_thread = ThreadObject::New(&SaveFileToDiskThread, NULL)) == NULL) { if (!_network_server) DEBUG(sl, 1, "Cannot create savegame thread, reverting to single-threaded mode..."); SaveOrLoadResult result = SaveFileToDisk(false); |