File diff r8434:4d5d2dc41ce0 → r8435:c2fea801325e
src/spritecache.cpp
Show inline comments
 
@@ -241,50 +241,50 @@ static void* ReadSprite(SpriteCache *sc,
 
bool LoadNextSprite(int load_index, byte file_slot, uint file_sprite_id)
 
{
 
	SpriteCache *sc;
 
	uint32 file_pos = FioGetPos();
 

	
 
	if (!ReadSpriteHeaderSkipData()) return false;
 

	
 
	if (load_index >= MAX_SPRITES) {
 
		error("Tried to load too many sprites (#%d; max %d)", load_index, MAX_SPRITES);
 
	}
 

	
 
	sc = AllocateSpriteCache(load_index);
 
	sc->file_slot = file_slot;
 
	sc->file_pos = file_pos;
 
	sc->ptr = NULL;
 
	sc->lru = 0;
 
	sc->id = file_sprite_id;
 

	
 
	return true;
 
}
 

	
 

	
 
void DupSprite(SpriteID old_spr, SpriteID new_spr)
 
{
 
	SpriteCache *scnew = AllocateSpriteCache(new_spr); // may reallocate: so put it first
 
	SpriteCache *scold = GetSpriteCache(old_spr);
 
	SpriteCache *scnew = AllocateSpriteCache(new_spr);
 

	
 
	scnew->file_slot = scold->file_slot;
 
	scnew->file_pos = scold->file_pos;
 
	scnew->ptr = NULL;
 
	scnew->id = scold->id;
 
}
 

	
 

	
 
#define S_FREE_MASK 1
 

	
 
static inline MemBlock* NextBlock(MemBlock* block)
 
{
 
	return (MemBlock*)((byte*)block + (block->size & ~S_FREE_MASK));
 
}
 

	
 
static uint32 GetSpriteCacheUsage()
 
{
 
	uint32 tot_size = 0;
 
	MemBlock* s;
 

	
 
	for (s = _spritecache_ptr; s->size != 0; s = NextBlock(s))
 
		if (!(s->size & S_FREE_MASK)) tot_size += s->size;
 

	
 
	return tot_size;