diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-01-13 14:16:23 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-01-13 14:16:23 +0300 |
commit | a60606e4678a3291f89ebac8ec5f94f5a6a40aff (patch) | |
tree | 7699f69194c71fd070199e7d4b9162185d58a043 /source/blender | |
parent | 830150c7b9e07a7e2d464ab16c7b14fd82a6968a (diff) |
Fix T73029: Crash transforming object
Was caused by recent animation backup added to depsgraph as a part of
another bugfix.
This commit effectively disables the animation backup, restoring bug
related on handlers, but makes it possible to interact with objects
again.
Will re-iterate over handlers+animated properties.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.cc | 5 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_animation.cc | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index a3439f80e4b..31c1b0361f8 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -2675,6 +2675,10 @@ void DepsgraphRelationBuilder::build_copy_on_write_relations(IDNode *id_node) } } +#if 0 + /* NOTE: Relation is disabled since AnimationBackup() is disabled. + * See comment in AnimationBackup:init_from_id(). */ + /* Copy-on-write of write will iterate over f-curves to store current values corresponding * to their RNA path. This means that action must be copied prior to the ID's copy-on-write, * otherwise depsgraph might try to access freed data. */ @@ -2689,6 +2693,7 @@ void DepsgraphRelationBuilder::build_copy_on_write_relations(IDNode *id_node) RELATION_FLAG_GODMODE | RELATION_FLAG_NO_FLUSH); } } +#endif } /* **** ID traversal callbacks functions **** */ diff --git a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_animation.cc b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_animation.cc index d5f29006434..cc4935431d1 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_animation.cc +++ b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_animation.cc @@ -100,6 +100,14 @@ void AnimationBackup::reset() void AnimationBackup::init_from_id(ID *id) { + /* NOTE: This animation backup nicely preserves values which are animated and + * are not touched by frame/depsgraph post_update handler. + * + * But it makes it impossible to have user edits to animated properties: for + * example, translation of object with animated location will not work with + * the current version of backup. */ + return; + AnimatedPropertyStoreCalbackData data; data.backup = this; data.id = id; @@ -109,6 +117,8 @@ void AnimationBackup::init_from_id(ID *id) void AnimationBackup::restore_to_id(ID *id) { + return; + PointerRNA id_pointer_rna; RNA_id_pointer_create(id, &id_pointer_rna); for (const AnimationValueBackup &value_backup : values_backup) { |