diff options
author | peter1138 <peter1138@openttd.org> | 2007-06-05 10:40:29 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2007-06-05 10:40:29 +0000 |
commit | 4403d41934ea81539bed5563bcb6b38d010a9298 (patch) | |
tree | 35234aabb3c2540a8abe8e2bb0f518931118a04c | |
parent | 959eaae6a41bdf854a74386912181f41c1df7b3e (diff) | |
download | openttd-4403d41934ea81539bed5563bcb6b38d010a9298.tar.xz |
(svn r10042) -Codechange: Replace hardcoded spritecache size with a configuration
option, sprite_cache_size. The default size is 2MB and the value can
range from 1 to 64MB. If you experience slow-downs when scrolling the
map, try increasing this setting.
-rw-r--r-- | src/settings.cpp | 2 | ||||
-rw-r--r-- | src/spritecache.cpp | 10 | ||||
-rw-r--r-- | src/spritecache.h | 2 |
3 files changed, 9 insertions, 5 deletions
diff --git a/src/settings.cpp b/src/settings.cpp index ea4e289fb..01065f4eb 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -46,6 +46,7 @@ #include "gfx.h" #include "fontcache.h" #endif +#include "spritecache.h" /** The patch values that are used for new games and/or modified in config file */ Patches _patches_newgame; @@ -1257,6 +1258,7 @@ static const SettingDescGlobVarList _misc_settings[] = { SDTG_VAR("medium_size", SLE_UINT, S, 0, _freetype.medium_size, 10, 0, 72, 0, STR_NULL, NULL), SDTG_VAR("large_size", SLE_UINT, S, 0, _freetype.large_size, 16, 0, 72, 0, STR_NULL, NULL), #endif + SDTG_VAR("sprite_cache_size",SLE_UINT, S, 0, _sprite_cache_size, 2, 1, 64, 0, STR_NULL, NULL), SDTG_END() }; diff --git a/src/spritecache.cpp b/src/spritecache.cpp index 50d880dd3..c45c92d96 100644 --- a/src/spritecache.cpp +++ b/src/spritecache.cpp @@ -12,9 +12,9 @@ #include "fileio.h" #include "helpers.hpp" -#ifndef SPRITE_CACHE_SIZE -# define SPRITE_CACHE_SIZE 2*1024*1024 -#endif /* SPRITE_CACHE_SIZE */ + +/* Default of 2MB spritecache */ +uint _sprite_cache_size = 2; struct SpriteCache { @@ -409,10 +409,10 @@ const void *GetRawSprite(SpriteID sprite) void GfxInitSpriteMem() { /* initialize sprite cache heap */ - if (_spritecache_ptr == NULL) _spritecache_ptr = (MemBlock*)malloc(SPRITE_CACHE_SIZE); + if (_spritecache_ptr == NULL) _spritecache_ptr = (MemBlock*)malloc(_sprite_cache_size * 1024 * 1024); /* A big free block */ - _spritecache_ptr->size = (SPRITE_CACHE_SIZE - sizeof(MemBlock)) | S_FREE_MASK; + _spritecache_ptr->size = ((_sprite_cache_size * 1024 * 1024) - sizeof(MemBlock)) | S_FREE_MASK; /* Sentinel block (identified by size == 0) */ NextBlock(_spritecache_ptr)->size = 0; diff --git a/src/spritecache.h b/src/spritecache.h index 747fbdecb..c979b73c5 100644 --- a/src/spritecache.h +++ b/src/spritecache.h @@ -14,6 +14,8 @@ struct Sprite { byte data[VARARRAY_SIZE]; }; +extern uint _sprite_cache_size; + const void *GetRawSprite(SpriteID sprite); bool SpriteExists(SpriteID sprite); |