[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14112] trunk/blender/source/blender/ blenkernel:
Brecht Van Lommel
brechtvanlommel at pandora.be
Fri Mar 14 19:21:06 CET 2008
Revision: 14112
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14112
Author: blendix
Date: 2008-03-14 19:21:06 +0100 (Fri, 14 Mar 2008)
Log Message:
-----------
Fix for bug #8467: a softbody hair crash.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_particle.h
trunk/blender/source/blender/blenkernel/intern/particle.c
trunk/blender/source/blender/blenkernel/intern/particle_system.c
Modified: trunk/blender/source/blender/blenkernel/BKE_particle.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_particle.h 2008-03-14 18:16:54 UTC (rev 14111)
+++ trunk/blender/source/blender/blenkernel/BKE_particle.h 2008-03-14 18:21:06 UTC (rev 14112)
@@ -212,7 +212,7 @@
void psys_free_settings(struct ParticleSettings *part);
void free_child_path_cache(struct ParticleSystem *psys);
void psys_free_path_cache(struct ParticleSystem *psys);
-void free_hair(struct ParticleSystem *psys);
+void free_hair(struct ParticleSystem *psys, int softbody);
void free_keyed_keys(struct ParticleSystem *psys);
void psys_free(struct Object * ob, struct ParticleSystem * psys);
void psys_free_children(struct ParticleSystem *psys);
Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c 2008-03-14 18:16:54 UTC (rev 14111)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c 2008-03-14 18:21:06 UTC (rev 14112)
@@ -275,7 +275,8 @@
if(part->pd)
MEM_freeN(part->pd);
}
-void free_hair(ParticleSystem *psys)
+
+void free_hair(ParticleSystem *psys, int softbody)
{
ParticleData *pa;
int i, totpart=psys->totpart;
@@ -288,7 +289,7 @@
psys->flag &= ~PSYS_HAIR_DONE;
- if(psys->soft) {
+ if(softbody && psys->soft) {
sbFree(psys->soft);
psys->soft = NULL;
}
@@ -342,7 +343,7 @@
psys_free_path_cache(psys);
- free_hair(psys);
+ free_hair(psys, 1);
free_keyed_keys(psys);
Modified: trunk/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle_system.c 2008-03-14 18:16:54 UTC (rev 14111)
+++ trunk/blender/source/blender/blenkernel/intern/particle_system.c 2008-03-14 18:21:06 UTC (rev 14112)
@@ -4476,7 +4476,7 @@
part->rotfrom = PART_ROT_IINCR;
}
else
- free_hair(psys);
+ free_hair(psys, 1);
psys->softflag= 0;
psys->recalc &= ~PSYS_TYPE;
@@ -4656,8 +4656,9 @@
if(psys->part->type==PART_HAIR && hair_needs_recalc(psys)){
float hcfra=0.0f;
int i;
- free_hair(psys);
+ free_hair(psys, 0);
+
/* first step is negative so particles get killed and reset */
psys->cfra=1.0f;
More information about the Bf-blender-cvs
mailing list