(svn r4483) - NewGRF: Dynamically allocate memory for 'real' spritegroups. This removes the limit of 16 loading/unloading states, although will result in less memory usage as most of the time the full fixed allocation wasn't used.
This commit is contained in:
12
newgrf.c
12
newgrf.c
@@ -1480,15 +1480,6 @@ static void NewSpriteGroup(byte *buf, int len)
|
||||
if (_cur_grffile->first_spriteset == 0)
|
||||
_cur_grffile->first_spriteset = _cur_grffile->spriteset_start;
|
||||
|
||||
if (numloaded > 16) {
|
||||
grfmsg(GMS_WARN, "NewSpriteGroup: More than 16 sprites in group %x, skipping the rest.", setid);
|
||||
numloaded = 16;
|
||||
}
|
||||
if (numloading > 16) {
|
||||
grfmsg(GMS_WARN, "NewSpriteGroup: More than 16 sprites in group %x, skipping the rest.", setid);
|
||||
numloading = 16;
|
||||
}
|
||||
|
||||
group = calloc(1, sizeof(*group));
|
||||
group->type = SGT_REAL;
|
||||
rg = &group->g.real;
|
||||
@@ -1497,6 +1488,9 @@ static void NewSpriteGroup(byte *buf, int len)
|
||||
rg->loaded_count = numloaded;
|
||||
rg->loading_count = numloading;
|
||||
|
||||
rg->loaded = calloc(rg->loaded_count, sizeof(*rg->loaded));
|
||||
rg->loading = calloc(rg->loading_count, sizeof(*rg->loading));
|
||||
|
||||
DEBUG(grf, 6) ("NewSpriteGroup: New SpriteGroup 0x%02hhx, %u views, %u loaded, %u loading, sprites %u - %u",
|
||||
setid, rg->sprites_per_set, rg->loaded_count, rg->loading_count,
|
||||
_cur_grffile->spriteset_start - _cur_grffile->sprite_offset,
|
||||
|
||||
Reference in New Issue
Block a user