Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2019-06-04 12:33:41 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2019-06-04 12:43:27 +0300
commit30c0d780f9d9012e45db4553e8df1c9526f03b27 (patch)
tree372ee3f12ab9305218c2cb5a8f288e1a7d40c2fb /source/blender/depsgraph/intern/eval/deg_eval_flush.cc
parent04bac387315ce09822c36bc20e0fe4e7d533fec8 (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.cc6
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. */