From b3cf0189a3163781fb661e9b1431b5c381d18c80 Mon Sep 17 00:00:00 2001 From: truelight Date: Sat, 26 Aug 2006 19:47:13 +0000 Subject: [PATCH] (svn r6155) -Codechange: split Destroy routine from SpriteGroupPoolCleanBlock Last change is to prepare for new pool system. --- newgrf_spritegroup.c | 45 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/newgrf_spritegroup.c b/newgrf_spritegroup.c index 591a1f736a..57372f51bc 100644 --- a/newgrf_spritegroup.c +++ b/newgrf_spritegroup.c @@ -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 };