diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-01-02 18:45:18 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-01-02 18:47:39 +0300 |
commit | 2e06a6bec3f5ed078a544dea9c4f842e403abbc0 (patch) | |
tree | 35b8a80219104cb4234c0d84c7f4752ad8a51a04 /source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc | |
parent | 461261c18dbf7d1ab52427b362752d25362311d6 (diff) |
Fix T72820: Linked objects jumping around during render
Was caused by 6183688c3560 (thanks ronsn for nailing it down!).
The issue is that order of copy-on-write operations is not defined, so
can not use flags set by that operation to make decision.
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.cc | 8 |
1 files changed, 4 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 3a2cf35f4d5..afb73a84afe 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 @@ -759,17 +759,17 @@ void update_animation_data_after_copy(const ID *id_orig, ID *id_cow) /* Some builders (like motion path one) will ignore proxies from being built. This code makes it so * proxy and proxy_group pointers never point to an original objects, preventing evaluation code * from assign evaluated pointer to an original proxy->proxy_from. */ -void update_proxy_pointers_after_copy(const Depsgraph * /*depsgraph*/, - const Object * /*object_orig*/, +void update_proxy_pointers_after_copy(const Depsgraph *depsgraph, + const Object *object_orig, Object *object_cow) { if (object_cow->proxy != NULL) { - if ((object_cow->proxy->id.tag & LIB_TAG_COPIED_ON_WRITE) == 0) { + if (!deg_check_id_in_depsgraph(depsgraph, &object_orig->proxy->id)) { object_cow->proxy = NULL; } } if (object_cow->proxy_group != NULL) { - if ((object_cow->proxy_group->id.tag & LIB_TAG_COPIED_ON_WRITE) == 0) { + if (!deg_check_id_in_depsgraph(depsgraph, &object_orig->proxy_group->id)) { object_cow->proxy_group = NULL; } } |