diff options
author | rubidium <rubidium@openttd.org> | 2009-02-23 10:50:25 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-02-23 10:50:25 +0000 |
commit | 0c1b8ea602de72a96573b7e3301589e8e3249ca1 (patch) | |
tree | b1be264cf851bf2b8888a29947b37d3f5539933a /src/spritecache.cpp | |
parent | 2433ba042b2e39b0306a04056136a18ca1323136 (diff) | |
download | openttd-0c1b8ea602de72a96573b7e3301589e8e3249ca1.tar.xz |
(svn r15555) -Codechange: remove the mallocs + frees for temporary data from loading sprites.
Diffstat (limited to 'src/spritecache.cpp')
-rw-r--r-- | src/spritecache.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/spritecache.cpp b/src/spritecache.cpp index 36ae25292..c5fa7f037 100644 --- a/src/spritecache.cpp +++ b/src/spritecache.cpp @@ -154,7 +154,6 @@ static void *ReadSprite(SpriteCache *sc, SpriteID id, SpriteType sprite_type) if (sprite_loader.LoadSprite(&sprite, file_slot, sc->id, sprite_type)) { sc->ptr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, &AllocSprite); - free(sprite.data); return sc->ptr; } @@ -256,7 +255,6 @@ static void *ReadSprite(SpriteCache *sc, SpriteID id, SpriteType sprite_type) return (void*)GetRawSprite(SPR_IMG_QUERY, ST_NORMAL); } sc->ptr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, &AllocSprite); - free(sprite.data); return sc->ptr; } @@ -561,3 +559,18 @@ void GfxInitSpriteMem() _compact_cache_counter = 0; } + +void SpriteLoader::Sprite::AllocateData(size_t size) +{ + if (Sprite::size < size) { + Sprite::size = size; + Sprite::mem = ReallocT<SpriteLoader::CommonPixel>(Sprite::mem, Sprite::size); + } + + memset(Sprite::mem, 0, sizeof(SpriteLoader::CommonPixel) * size); + + this->data = Sprite::mem; + +} +/* static */ SpriteLoader::CommonPixel *SpriteLoader::Sprite::mem = NULL; +/* static */ size_t SpriteLoader::Sprite::size = 0; |