diff options
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; |