Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/intern/particle.c')
-rw-r--r--source/blender/blenkernel/intern/particle.c40
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)