diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-07-09 13:12:18 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-07-09 13:12:54 +0300 |
commit | 89c762dd991c64fa46803b3459a2197e25b6138a (patch) | |
tree | ba671c9058be6f612c5f9a0232d62944bd8e6005 /source/blender/blenkernel/intern/multires.c | |
parent | 25a0acd0a6c8344cfb425f8e9444666dc95d5bf5 (diff) |
Fix T57652: Multires undo broken with shared object data
Diffstat (limited to 'source/blender/blenkernel/intern/multires.c')
-rw-r--r-- | source/blender/blenkernel/intern/multires.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 17d6b623b33..29337ca9985 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -385,12 +385,20 @@ static void multires_ccg_mark_as_modified(SubdivCCG *subdiv_ccg, MultiresModifie } } -void multires_mark_as_modified(Object *ob, MultiresModifiedFlags flags) +void multires_mark_as_modified(Depsgraph *depsgraph, Object *object, MultiresModifiedFlags flags) { - if (ob == NULL) { + if (object == NULL) { return; } - Mesh *mesh = ob->data; + /* NOTE: CCG live inside of evaluated object. + * + * While this is a bit weird to tag the only one, this is how other areas were built + * historically: they are tagging multires for update and then rely on object re-evaluation to + * do an actual update. + * + * In a longer term maybe special dependency graph tag can help sanitizing this a bit. */ + Object *object_eval = DEG_get_evaluated_object(depsgraph, object); + Mesh *mesh = object_eval->data; SubdivCCG *subdiv_ccg = mesh->runtime.subdiv_ccg; if (subdiv_ccg == NULL) { return; |