diff options
author | frosch <frosch@openttd.org> | 2014-02-16 17:45:24 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2014-02-16 17:45:24 +0000 |
commit | 55502341ac4975e2e5bf0661b094fa3d4e7fe890 (patch) | |
tree | b9af05a42afcf280c0141d06090749b666a0717f /src | |
parent | 20785c79fc2437683eb59ebdf98dde0ce1863c2c (diff) | |
download | openttd-55502341ac4975e2e5bf0661b094fa3d4e7fe890.tar.xz |
(svn r26346) -Fix [FS#5870]: Call Layouter::ReduceLineCache from GenerateTownName in all cases.
Diffstat (limited to 'src')
-rw-r--r-- | src/town_cmd.cpp | 8 | ||||
-rw-r--r-- | src/townname.cpp | 5 |
2 files changed, 5 insertions, 8 deletions
diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 7ca11fe31..d3c480af1 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -46,7 +46,6 @@ #include "object_base.h" #include "ai/ai.hpp" #include "game/game.hpp" -#include "gfx_layout.h" #include "table/strings.h" #include "table/town_land.h" @@ -1909,13 +1908,6 @@ bool GenerateTowns(TownLayout layout) * Note that this is really a suggested value, not a required one. * We would not like the system to lock up just because the user wanted 100 cities on a 64*64 map, would we? */ do { - if (total % 512 == 0) { - /* Clear the caches regularly, otherwise it will only be done - * at the end of the whole cycle when OpenTTD has allocated - * lots and lots of memory for these essentially caches. */ - Layouter::ReduceLineCache(); - } - bool city = (_settings_game.economy.larger_towns != 0 && Chance16(1, _settings_game.economy.larger_towns)); IncreaseGeneratingWorldProgress(GWP_TOWN); /* Get a unique name for the town. */ diff --git a/src/townname.cpp b/src/townname.cpp index 136882103..ad9b26fee 100644 --- a/src/townname.cpp +++ b/src/townname.cpp @@ -16,6 +16,7 @@ #include "strings_func.h" #include "core/random_func.hpp" #include "genworld.h" +#include "gfx_layout.h" #include "table/townname.h" @@ -125,6 +126,10 @@ bool GenerateTownName(uint32 *townnameparts, TownNames *town_names) * too much). */ TownNameParams par(_settings_game.game_creation.town_name); + /* This function is called very often without entering the gameloop + * inbetween. So reset layout cache to prevent it from growing too big. */ + Layouter::ReduceLineCache(); + for (int i = 1000; i != 0; i--) { uint32 r = _generating_world ? Random() : InteractiveRandom(); if (!VerifyTownName(r, &par, town_names)) continue; |