diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2014-01-22 00:01:12 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2014-01-22 00:03:49 +0400 |
commit | 2aeb49204d40d6a43026de6f87fd5e7f0df100c6 (patch) | |
tree | ec40874f4175b4e56d26988e227188f0dcd2e4fd /source/blender/blenkernel/intern/anim_sys.c | |
parent | ae3f577ac18acf22ee2dafd939b6e121fd220c1f (diff) |
Fix T38306: dupliframes causing viewport render to continually restart.
Evaluating the animation is causing the object to get tagged as changed, but in
this case it's not a permanent change so no one should be notified. Also found
a case where the persistent ID for duplis wasn't unique, fixed that as well.
Diffstat (limited to 'source/blender/blenkernel/intern/anim_sys.c')
-rw-r--r-- | source/blender/blenkernel/intern/anim_sys.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c index 609932ae5e2..f20fa0c401d 100644 --- a/source/blender/blenkernel/intern/anim_sys.c +++ b/source/blender/blenkernel/intern/anim_sys.c @@ -1382,8 +1382,13 @@ static short animsys_write_rna_setting(PointerRNA *ptr, char *path, int array_in * be run, it's for e.g. render engines to synchronize data */ if (written && new_ptr.id.data) { ID *id = new_ptr.id.data; - id->flag |= LIB_ID_RECALC; - DAG_id_type_tag(G.main, GS(id->name)); + + /* for cases like duplifarmes it's only a temporary so don't + * notify anyone of updates */ + if (!(id->flag & LIB_ANIM_NO_RECALC)) { + id->flag |= LIB_ID_RECALC; + DAG_id_type_tag(G.main, GS(id->name)); + } } } |