better solution
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@722 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
eede8928f3
commit
8b17508ae4
1 changed files with 7 additions and 24 deletions
|
@ -305,7 +305,7 @@ void R_ParticleEffect_f(void)
|
||||||
char *var, *value;
|
char *var, *value;
|
||||||
char *buf;
|
char *buf;
|
||||||
particle_t *parts;
|
particle_t *parts;
|
||||||
beamseg_t *beamsegs, *btemp;
|
beamseg_t *beamsegs;
|
||||||
skytris_t *st;
|
skytris_t *st;
|
||||||
|
|
||||||
part_type_t *ptype;
|
part_type_t *ptype;
|
||||||
|
@ -350,30 +350,13 @@ void R_ParticleEffect_f(void)
|
||||||
ptype->particles = parts;
|
ptype->particles = parts;
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear beam list.. bit more complex
|
// go with a lazy clear of list.. mark everything as DEAD and let
|
||||||
while (ptype->beams && !(ptype->beams->flags & BS_LASTSEG))
|
// the beam rendering handle removing nodes
|
||||||
|
beamsegs = ptype->beams;
|
||||||
|
while (beamsegs)
|
||||||
{
|
{
|
||||||
beamsegs = ptype->beams->next;
|
beamsegs->flags |= BS_DEAD;
|
||||||
ptype->beams->next = free_beams;
|
beamsegs = beamsegs->next;
|
||||||
free_beams = ptype->beams;
|
|
||||||
ptype->beams = beamsegs;
|
|
||||||
}
|
|
||||||
|
|
||||||
btemp = ptype->beams;
|
|
||||||
while (btemp)
|
|
||||||
{
|
|
||||||
if (btemp->flags & BS_LASTSEG) // prevent runaway pointers
|
|
||||||
{
|
|
||||||
btemp->flags |= BS_DEAD;
|
|
||||||
btemp = btemp->next;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
beamsegs = btemp->next;
|
|
||||||
btemp->next = free_beams;
|
|
||||||
free_beams = btemp;
|
|
||||||
btemp = beamsegs;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
beamsegs = ptype->beams;
|
beamsegs = ptype->beams;
|
||||||
|
|
Loading…
Reference in a new issue