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:
authorBastien Montagne <bastien@blender.org>2020-06-18 19:26:15 +0300
committerBastien Montagne <bastien@blender.org>2020-06-18 19:27:49 +0300
commitd5954ef11c973069aeb62d0d9edecac617234bb4 (patch)
tree0615218ca82f732049734e60d7cf305a25f2150e /source/blender/depsgraph
parent722adcfc48078ea3994c1dbf3d5d751864e6ae12 (diff)
LibOverride: only tag actually changed orig IDs for automatic override diffing.
This makes any operation (including mere bone selection) several times faster on some complex production character, since we typically now only need to diff a single ID, instead of tens of them.
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r--source/blender/depsgraph/intern/eval/deg_eval_flush.cc5
1 files changed, 4 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 df6c139e916..50469d57a34 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
@@ -251,7 +251,10 @@ void flush_editors_id_update(Depsgraph *graph, const DEGEditorUpdateContext *upd
if (graph->is_active && id_node->is_user_modified) {
deg_editors_id_update(update_ctx, id_orig);
}
- if (ID_IS_OVERRIDE_LIBRARY(id_orig)) {
+ if (ID_IS_OVERRIDE_LIBRARY(id_orig) && id_orig->recalc != 0) {
+ /* We only want to tag an ID for liboverride autorefresh if it was actually tagged as
+ * changed. CoW IDs indirectly modified because of changes in other IDs should never
+ * require a liboverride diffing. */
id_orig->tag |= LIB_TAG_OVERRIDE_LIBRARY_AUTOREFRESH;
}
/* Inform draw engines that something was changed. */