From c3fcb2ef2a2d6580bde415245156478dcfafcc1f Mon Sep 17 00:00:00 2001 From: Darkvater Date: Wed, 17 Jan 2007 23:39:13 +0000 Subject: [PATCH] (svn r8222) [0.5] -Backport from trunk (lang, r8171, r8186, r8218): - last missed chunk of danish language changes (lang) - (FS#556) return SL_ERROR when unthreaded saves failed (r8171) - (FS#557) apply railtype offset to station graphics if no custom station is in use (r8186) - Increase spritecache size to 2MB (r8218). --- lang/danish.txt | 2 +- network_server.c | 2 ++ saveload.c | 26 ++++++++++++++++++-------- spritecache.c | 4 +++- station_cmd.c | 2 +- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/lang/danish.txt b/lang/danish.txt index d9e9cc9406..2bf87c9a04 100644 --- a/lang/danish.txt +++ b/lang/danish.txt @@ -1117,7 +1117,7 @@ STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Afslut STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Aktiver rolig økonomi (flere små ændringer) STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Tillad at købe aktier i andre selskaber STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Ved trækning placer signal hvert: {ORANGE}{STRING} felt -STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Placering af værktøjslinie: {ORANGE}{STRING} +STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Placering af værktøjslinje: {ORANGE}{STRING} STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Venstre STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Center STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Højre diff --git a/network_server.c b/network_server.c index d6b07883d5..758098d4ef 100644 --- a/network_server.c +++ b/network_server.c @@ -287,6 +287,8 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_MAP) file_pointer = fopen(filename, "rb"); fseek(file_pointer, 0, SEEK_END); + if (ftell(file_pointer) == 0) error("network savedump failed - zero sized savegame?"); + // Now send the _frame_counter and how many packets are coming p = NetworkSend_Init(PACKET_SERVER_MAP); NetworkSend_uint8(p, MAP_PACKET_START); diff --git a/saveload.c b/saveload.c index 7dc41ab5a5..e8d5f528eb 100644 --- a/saveload.c +++ b/saveload.c @@ -1429,7 +1429,7 @@ static OTTDThread* save_thread; /** We have written the whole game into memory, _Savegame_pool, now find * and appropiate compressor and start writing to file. */ -static void* SaveFileToDisk(void *arg) +static SaveOrLoadResult SaveFileToDisk(bool threaded) { const SaveLoadFormat *fmt; uint32 hdr[2]; @@ -1441,12 +1441,12 @@ static void* SaveFileToDisk(void *arg) _sl.excpt_uninit(); fprintf(stderr, "Save game failed: %s.", _sl.excpt_msg); - if (arg != NULL) { + if (threaded) { OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_ERROR); } else { SaveFileError(); } - return NULL; + return SL_ERROR; } fmt = GetSavegameFormat(_savegame_format); @@ -1479,7 +1479,14 @@ static void* SaveFileToDisk(void *arg) GetSavegameFormat("memory")->uninit_write(); // clean the memorypool fclose(_sl.fh); - if (arg != NULL) OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_DONE); + if (threaded) OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_DONE); + + return SL_OK; +} + +static void* SaveFileToDiskThread(void *arg) +{ + SaveFileToDisk(true); return NULL; } @@ -1567,11 +1574,14 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode) SlWriteFill(); // flush the save buffer SaveFileStart(); - if (_network_server || - (save_thread = OTTDCreateThread(&SaveFileToDisk, (void*)"")) == NULL) { - DEBUG(misc, 1) ("[Sl] Cannot create savegame thread, reverting to single-threaded mode..."); - SaveFileToDisk(NULL); + if (_network_server || (save_thread = OTTDCreateThread(&SaveFileToDiskThread, NULL)) == NULL) { + SaveOrLoadResult result; + + if (!_network_server) DEBUG(misc, 1) ("Cannot create savegame thread, reverting to single-threaded mode..."); + result = SaveFileToDisk(false); SaveFileDone(); + + return result; } } else { /* LOAD game */ diff --git a/spritecache.c b/spritecache.c index a27444ce12..f754a1ec1a 100644 --- a/spritecache.c +++ b/spritecache.c @@ -9,7 +9,9 @@ #include "table/sprites.h" #include "fileio.h" -#define SPRITE_CACHE_SIZE 1024*1024 +#ifndef SPRITE_CACHE_SIZE +# define SPRITE_CACHE_SIZE 2*1024*1024 +#endif /* SPRITE_CACHE_SIZE */ #define WANT_NEW_LRU diff --git a/station_cmd.c b/station_cmd.c index b8b7fc6561..625d916af3 100644 --- a/station_cmd.c +++ b/station_cmd.c @@ -2129,7 +2129,7 @@ static void DrawTile_Station(TileInfo *ti) foreach_draw_tile_seq(dtss, t->seq) { image = dtss->image; - if (HASBIT(image, 30)) { + if (relocation == 0 || HASBIT(image, 30)) { CLRBIT(image, 30); image += rti->total_offset; } else {