summaryrefslogtreecommitdiff
path: root/src/spritecache.cpp
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2008-01-22 07:27:06 +0000
committerpeter1138 <peter1138@openttd.org>2008-01-22 07:27:06 +0000
commitffec79bbcf36028bc676310c71a40b0b033e85c5 (patch)
treeaa8442d483b420571317c63234db3640f7e6df7b /src/spritecache.cpp
parent9444eb4484e5691a52ddc458bd8b401c6e19571d (diff)
downloadopenttd-ffec79bbcf36028bc676310c71a40b0b033e85c5.tar.xz
(svn r11940) -Codechange: Store short filename once per open file instead of once per sprite cache entry. Not all file types need this, but most of the time no sprite cache entry needed it either.
Diffstat (limited to 'src/spritecache.cpp')
-rw-r--r--src/spritecache.cpp21
1 files changed, 2 insertions, 19 deletions
diff --git a/src/spritecache.cpp b/src/spritecache.cpp
index 48c4d67e2..0db889946 100644
--- a/src/spritecache.cpp
+++ b/src/spritecache.cpp
@@ -24,7 +24,6 @@ uint _sprite_cache_size = 4;
struct SpriteCache {
void *ptr;
- const char *grf_name;
uint32 id;
uint32 file_pos;
uint16 file_slot;
@@ -143,7 +142,7 @@ static void* ReadSprite(SpriteCache *sc, SpriteID id, bool real_sprite)
SpriteLoaderPNG sprite_loader;
SpriteLoader::Sprite sprite;
- if (sprite_loader.LoadSprite(&sprite, sc->grf_name, 0, sc->id)) {
+ if (sprite_loader.LoadSprite(&sprite, file_slot, sc->id)) {
sc->ptr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, &AllocSprite);
free(sprite.data);
@@ -230,7 +229,7 @@ static void* ReadSprite(SpriteCache *sc, SpriteID id, bool real_sprite)
SpriteLoaderGrf sprite_loader;
SpriteLoader::Sprite sprite;
- if (!sprite_loader.LoadSprite(&sprite, sc->grf_name, file_slot, file_pos)) return NULL;
+ if (!sprite_loader.LoadSprite(&sprite, file_slot, file_pos)) return NULL;
if (id == 142) sprite.height = 10; // Compensate for a TTD bug
sc->ptr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, &AllocSprite);
free(sprite.data);
@@ -257,19 +256,6 @@ bool LoadNextSprite(int load_index, byte file_slot, uint file_sprite_id)
sc->lru = 0;
sc->id = file_sprite_id;
- const char *fio_grf_name = FioGetFilename();
- const char *t = strrchr(fio_grf_name, PATHSEPCHAR);
- char *grf_name;
- if (t == NULL) grf_name = strdup(fio_grf_name);
- else grf_name = strdup(t);
- /* Make the string lowercase and strip extension */
- char *t2 = strrchr(grf_name, '.');
- if (t2 != NULL) *t2 = '\0';
- strtolower(grf_name);
-
- free((char *)sc->grf_name);
- sc->grf_name = grf_name;
-
return true;
}
@@ -283,8 +269,6 @@ void DupSprite(SpriteID old_spr, SpriteID new_spr)
scnew->file_pos = scold->file_pos;
scnew->ptr = NULL;
scnew->id = scold->id;
- free((char *)scnew->grf_name);
- scnew->grf_name = strdup(scold->grf_name);
}
@@ -493,7 +477,6 @@ void GfxInitSpriteMem()
NextBlock(_spritecache_ptr)->size = 0;
/* Reset the spritecache 'pool' */
- for (uint i = 0; i < _spritecache_items; i++) free((char *)_spritecache[i].grf_name);
free(_spritecache);
_spritecache_items = 0;
_spritecache = NULL;