Commit: d5954ef11c973069aeb62d0d9edecac617234bb4
Author: Bastien Montagne
Date:   Thu Jun 18 18:26:15 2020 +0200
Branches: master
https://developer.blender.org/rBd5954ef11c973069aeb62d0d9edecac617234bb4

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.

===================================================================

M       source/blender/depsgraph/intern/eval/deg_eval_flush.cc

===================================================================

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

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to