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:
authorSergey Sharybin <sergey.vfx@gmail.com>2019-07-15 16:27:22 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2019-07-15 16:54:27 +0300
commit914427afd5129954781cf4459067efeb6afa7d14 (patch)
tree4c538523b3629c1896760c45dddb31b2b5fd9f12 /source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
parent9db772fe9afea62657ccdfaeda0bff8700c490ef (diff)
Fix T66686: Crash on Particle Edit, then Render
Reviewers: brecht, zeddb Reviewed By: brecht Maniphest Tasks: T66686 Differential Revision: https://developer.blender.org/D5259
Diffstat (limited to 'source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc')
-rw-r--r--source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc15
1 files changed, 11 insertions, 4 deletions
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
index 11fbec62d60..1f310957896 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
@@ -685,8 +685,13 @@ void set_particle_system_modifiers_loaded(Object *object_cow)
}
}
-void reset_particle_system_edit_eval(Object *object_cow)
+void reset_particle_system_edit_eval(const Depsgraph *depsgraph, Object *object_cow)
{
+ /* Inactive (and render) dependency graphs are living in own little bubble, should not care about
+ * edit mode at all. */
+ if (!DEG_is_active(reinterpret_cast<const ::Depsgraph *>(depsgraph))) {
+ return;
+ }
LISTBASE_FOREACH (ParticleSystem *, psys, &object_cow->particlesystem) {
ParticleSystem *orig_psys = psys->orig_psys;
if (orig_psys->edit != NULL) {
@@ -696,11 +701,13 @@ void reset_particle_system_edit_eval(Object *object_cow)
}
}
-void update_particles_after_copy(const Object *object_orig, Object *object_cow)
+void update_particles_after_copy(const Depsgraph *depsgraph,
+ const Object *object_orig,
+ Object *object_cow)
{
update_particle_system_orig_pointers(object_orig, object_cow);
set_particle_system_modifiers_loaded(object_cow);
- reset_particle_system_edit_eval(object_cow);
+ reset_particle_system_edit_eval(depsgraph, object_cow);
}
void update_pose_orig_pointers(const bPose *pose_orig, bPose *pose_cow)
@@ -779,7 +786,7 @@ void update_id_after_copy(const Depsgraph *depsgraph,
}
BKE_pose_pchan_index_rebuild(object_cow->pose);
}
- update_particles_after_copy(object_orig, object_cow);
+ update_particles_after_copy(depsgraph, object_orig, object_cow);
update_modifiers_orig_pointers(object_orig, object_cow);
break;
}