diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-06-04 12:33:41 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-06-04 12:43:27 +0300 |
commit | 30c0d780f9d9012e45db4553e8df1c9526f03b27 (patch) | |
tree | 372ee3f12ab9305218c2cb5a8f288e1a7d40c2fb /source/blender/depsgraph/intern/eval/deg_eval_flush.cc | |
parent | 04bac387315ce09822c36bc20e0fe4e7d533fec8 (diff) |
Depsgraph: Only run editors ID update on manual edits
This is how it worked in 2.79 and it is how it is expected to be working.
Avoids unintended icons update during animation playback.
Fixes T64318: Update of material icons during animation 2x performance penalty
Diffstat (limited to 'source/blender/depsgraph/intern/eval/deg_eval_flush.cc')
-rw-r--r-- | source/blender/depsgraph/intern/eval/deg_eval_flush.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc index 6d8dcf2778f..06e63b6868c 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc +++ b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc @@ -187,6 +187,10 @@ BLI_INLINE OperationNode *flush_schedule_children(OperationNode *op_node, FlushQ if (rel->flag & RELATION_FLAG_NO_FLUSH) { continue; } + if (op_node->flag & DEPSOP_FLAG_USER_MODIFIED) { + IDNode *id_node = op_node->owner->owner; + id_node->is_user_modified = true; + } /* Relation only allows flushes on user changes, but the node was not * affected by user. */ if ((rel->flag & RELATION_FLAG_FLUSH_USER_EDIT_ONLY) && @@ -257,7 +261,7 @@ void flush_editors_id_update(Depsgraph *graph, const DEGEditorUpdateContext *upd * TODO: image datablocks do not use COW, so might not be detected * correctly. */ if (deg_copy_on_write_is_expanded(id_cow)) { - if (graph->is_active) { + if (graph->is_active && id_node->is_user_modified) { deg_editors_id_update(update_ctx, id_orig); } /* ID may need to get its auto-override operations refreshed. */ |