Changeset - r4402:35a65f38e37f
[Not reviewed]
master
0 1 0
truelight - 18 years ago 2006-08-26 19:47:13
truelight@openttd.org
(svn r6155) -Codechange: split Destroy routine from SpriteGroupPoolCleanBlock
Last change is to prepare for new pool system.
1 file changed with 23 insertions and 22 deletions:
0 comments (0 inline, 0 general)
newgrf_spritegroup.c
Show inline comments
 
@@ -16,37 +16,38 @@ enum {
 
static uint _spritegroup_count = 0;
 
static MemoryPool _spritegroup_pool;
 

	
 
void DestroySpriteGroup(SpriteGroup *group)
 
{
 
	/* Free dynamically allocated memory */
 
	switch (group->type) {
 
		case SGT_REAL:
 
			free(group->g.real.loaded);
 
			free(group->g.real.loading);
 
			break;
 

	
 
		case SGT_DETERMINISTIC:
 
			free(group->g.determ.adjusts);
 
			free(group->g.determ.ranges);
 
			break;
 

	
 
		case SGT_RANDOMIZED:
 
			free(group->g.random.groups);
 
			break;
 

	
 
		default:
 
			break;
 
	}
 
}
 

	
 
static void SpriteGroupPoolCleanBlock(uint start_item, uint end_item)
 
{
 
	uint i;
 

	
 
	for (i = start_item; i <= end_item; i++) {
 
		SpriteGroup *group = (SpriteGroup*)GetItemFromPool(&_spritegroup_pool, i);
 

	
 
		/* Free dynamically allocated memory */
 
		switch (group->type) {
 
			case SGT_REAL:
 
				free(group->g.real.loaded);
 
				free(group->g.real.loading);
 
				break;
 

	
 
			case SGT_DETERMINISTIC:
 
				free(group->g.determ.adjusts);
 
				free(group->g.determ.ranges);
 
				break;
 

	
 
			case SGT_RANDOMIZED:
 
				free(group->g.random.groups);
 
				break;
 

	
 
			default:
 
				break;
 
		}
 
		DestroySpriteGroup((SpriteGroup*)GetItemFromPool(&_spritegroup_pool, i));
 
	}
 
}
 

	
 

	
 
/* Initialize the SpriteGroup pool */
 
static MemoryPool _spritegroup_pool = { "SpriteGr", SPRITEGROUP_POOL_MAX_BLOCKS, SPRITEGROUP_POOL_BLOCK_SIZE_BITS, sizeof(SpriteGroup), NULL, &SpriteGroupPoolCleanBlock, 0, 0, NULL };
 

	
0 comments (0 inline, 0 general)