[Bf-blender-cvs] [87d2de88fde] blender-v3.1-release: Fix T95664: missing update after changing active output node

Jacques Lucke noreply at git.blender.org
Thu Feb 10 12:08:01 CET 2022


Commit: 87d2de88fdeec75c7dcd77f93d51ee71542b45ce
Author: Jacques Lucke
Date:   Thu Feb 10 12:07:48 2022 +0100
Branches: blender-v3.1-release
https://developer.blender.org/rB87d2de88fdeec75c7dcd77f93d51ee71542b45ce

Fix T95664: missing update after changing active output node

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

M	source/blender/blenkernel/BKE_node_tree_update.h
M	source/blender/blenkernel/intern/node_tree_update.cc
M	source/blender/editors/space_node/node_edit.cc

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

diff --git a/source/blender/blenkernel/BKE_node_tree_update.h b/source/blender/blenkernel/BKE_node_tree_update.h
index 443ceafb073..834445420ef 100644
--- a/source/blender/blenkernel/BKE_node_tree_update.h
+++ b/source/blender/blenkernel/BKE_node_tree_update.h
@@ -60,6 +60,8 @@ void BKE_ntree_update_tag_link_removed(struct bNodeTree *ntree);
 void BKE_ntree_update_tag_link_added(struct bNodeTree *ntree, struct bNodeLink *link);
 void BKE_ntree_update_tag_link_mute(struct bNodeTree *ntree, struct bNodeLink *link);
 
+/** Used when the a new output node becomes active and therefore changes the output. */
+void BKE_ntree_update_tag_active_output_changed(struct bNodeTree *ntree);
 /** Used after file loading when run-time data on the tree has not been initialized yet. */
 void BKE_ntree_update_tag_missing_runtime_data(struct bNodeTree *ntree);
 /** Used when the interface sockets/values have changed. */
diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc
index 904a0de9a90..9f3ce68ca69 100644
--- a/source/blender/blenkernel/intern/node_tree_update.cc
+++ b/source/blender/blenkernel/intern/node_tree_update.cc
@@ -1614,6 +1614,11 @@ void BKE_ntree_update_tag_link_mute(bNodeTree *ntree, bNodeLink *UNUSED(link))
   add_tree_tag(ntree, NTREE_CHANGED_LINK);
 }
 
+void BKE_ntree_update_tag_active_output_changed(bNodeTree *ntree)
+{
+  add_tree_tag(ntree, NTREE_CHANGED_ANY);
+}
+
 void BKE_ntree_update_tag_missing_runtime_data(bNodeTree *ntree)
 {
   add_tree_tag(ntree, NTREE_CHANGED_ALL);
diff --git a/source/blender/editors/space_node/node_edit.cc b/source/blender/editors/space_node/node_edit.cc
index a513f5df7a0..aa27edd77a7 100644
--- a/source/blender/editors/space_node/node_edit.cc
+++ b/source/blender/editors/space_node/node_edit.cc
@@ -667,6 +667,7 @@ void ED_node_set_active(
       node->flag |= NODE_DO_OUTPUT;
       if (!was_output) {
         do_update = true;
+        BKE_ntree_update_tag_active_output_changed(ntree);
       }
     }
 
@@ -684,6 +685,7 @@ void ED_node_set_active(
         }
 
         node->flag |= NODE_DO_OUTPUT;
+        BKE_ntree_update_tag_active_output_changed(ntree);
       }
 
       ED_node_tree_propagate_change(nullptr, bmain, ntree);
@@ -750,6 +752,7 @@ void ED_node_set_active(
 
         node->flag |= NODE_DO_OUTPUT;
         if (was_output == 0) {
+          BKE_ntree_update_tag_active_output_changed(ntree);
           ED_node_tree_propagate_change(nullptr, bmain, ntree);
         }
 
@@ -765,6 +768,7 @@ void ED_node_set_active(
           }
 
           node->flag |= NODE_DO_OUTPUT;
+          BKE_ntree_update_tag_active_output_changed(ntree);
           ED_node_tree_propagate_change(nullptr, bmain, ntree);
         }
       }



More information about the Bf-blender-cvs mailing list