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:
authorPhilipp Oeser <info@graphics-engineer.com>2019-09-27 15:48:35 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2019-12-19 22:58:22 +0300
commit0647232ac545a7c56f6d5abd7700143fc4455024 (patch)
tree6e471f5c38415d2a04d3ce569f521fbd3a5a2511 /source/blender/editors/physics
parent66d773c2e7c595a65454ce1f0ca8f131a03125ed (diff)
Fix particle editmode undo not doing proper updates when child particles
are visible Not freeing PTCacheEdit and tagging batch cache dirty on undo will have a couple of consequences. This patch fixes: - crash deleting a particle, then undo - basically any edit (combing, ...), then undo will leave child hairs untouched - adding hairs (through mirror, add tool, ...), then undo will leave 'orphaned' child hairs See also D5755 for a related discussion Fixes the crasher mentioned in T69000 Might move this to a utility function later [since it is used in more places], but that is for after going over some more reports... Reviewers: sergey Differential Revision: https://developer.blender.org/D5912
Diffstat (limited to 'source/blender/editors/physics')
-rw-r--r--source/blender/editors/physics/particle_edit_undo.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/source/blender/editors/physics/particle_edit_undo.c b/source/blender/editors/physics/particle_edit_undo.c
index aee79523c87..e85b025e28e 100644
--- a/source/blender/editors/physics/particle_edit_undo.c
+++ b/source/blender/editors/physics/particle_edit_undo.c
@@ -262,6 +262,11 @@ static void particle_undosys_step_decode(struct bContext *C,
PTCacheEdit *edit = PE_get_current(depsgraph, scene, ob);
if (edit) {
undoptcache_to_editcache(&us->data, edit);
+ ParticleEditSettings *pset = &scene->toolsettings->particle;
+ if ((pset->flag & PE_DRAW_PART) != 0) {
+ psys_free_path_cache(NULL, edit);
+ BKE_particle_batch_cache_dirty_tag(edit->psys, BKE_PARTICLE_BATCH_DIRTY_ALL);
+ }
DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY);
}
else {