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.
This commit is contained in:
Bastien Montagne
2020-06-18 18:26:15 +02:00
parent 722adcfc48
commit d5954ef11c

View File

@@ -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. */