diff options
Diffstat (limited to 'source/blender/blenkernel/intern/particle.c')
-rw-r--r-- | source/blender/blenkernel/intern/particle.c | 40 |
1 files changed, 9 insertions, 31 deletions
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 90c9a71f4ee..9aacba8d02e 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -371,40 +371,12 @@ static void fluid_free_settings(SPHFluidSettings *fluid) MEM_freeN(fluid); } -/** - * Free (or release) any data used by this particle settings (does not free the partsett itself). - * - * \param part The particle settings to free. - * \param do_id_user When \a true, ID datablocks used (referenced) by this partsett are 'released' - * (their user count is decreased). - */ -void BKE_particlesettings_free(ParticleSettings *part, const bool do_id_user) +void BKE_particlesettings_free(ParticleSettings *part) { + MTex *mtex; int a; - - if (do_id_user) { - MTex *mtex; - - for (a = 0; a < MAX_MTEX; a++) { - mtex = part->mtex[a]; - if (mtex && mtex->tex) { - id_us_min(&mtex->tex->id); - mtex->tex = NULL; - } - } - - /* No ID refcount here... */ - part->dup_group = NULL; - part->dup_ob = NULL; - part->bb_ob = NULL; - } - BKE_animdata_free(&part->id); - for (a = 0; a < MAX_MTEX; a++) { - MEM_SAFE_FREE(part->mtex[a]); - } - if (part->clumpcurve) curvemapping_free(part->clumpcurve); if (part->roughcurve) @@ -413,13 +385,19 @@ void BKE_particlesettings_free(ParticleSettings *part, const bool do_id_user) free_partdeflect(part->pd); free_partdeflect(part->pd2); - MEM_SAFE_FREE(part->effector_weights); + if (part->effector_weights) + MEM_freeN(part->effector_weights); BLI_freelistN(&part->dupliweights); boid_free_settings(part->boids); fluid_free_settings(part->fluid); + for (a = 0; a < MAX_MTEX; a++) { + mtex = part->mtex[a]; + if (mtex && mtex->tex) mtex->tex->id.us--; + if (mtex) MEM_freeN(mtex); + } } void free_hair(Object *UNUSED(ob), ParticleSystem *psys, int dynamics) |