[Bf-blender-cvs] [5c70f5a7f71] node-tree-update-refactor: progress

Jacques Lucke noreply at git.blender.org
Mon Nov 15 19:09:21 CET 2021


Commit: 5c70f5a7f71337bfc54b3d89c7d81a973d9c3657
Author: Jacques Lucke
Date:   Mon Nov 15 13:32:44 2021 +0100
Branches: node-tree-update-refactor
https://developer.blender.org/rB5c70f5a7f71337bfc54b3d89c7d81a973d9c3657

progress

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

M	source/blender/blenkernel/intern/node_tree_update.cc

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

diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc
index 37943647cf3..b1103e3175b 100644
--- a/source/blender/blenkernel/intern/node_tree_update.cc
+++ b/source/blender/blenkernel/intern/node_tree_update.cc
@@ -21,6 +21,46 @@
 #include "BKE_node.h"
 #include "BKE_node_tree_update.h"
 
+namespace blender::bke {
+
+class NodeTreeMainUpdater {
+ private:
+  Main *bmain_;
+  NodeTreeUpdateExtraParams *params_;
+
+ public:
+  NodeTreeMainUpdater(Main *bmain, NodeTreeUpdateExtraParams *params)
+      : bmain_(bmain), params_(params)
+  {
+  }
+
+  void update()
+  {
+    FOREACH_NODETREE_BEGIN (bmain_, ntree, id) {
+      ntreeUpdateTree(bmain_, ntree);
+      if (params_) {
+        if (params_->tree_changed_fn) {
+          params_->tree_changed_fn(id, ntree, params_->user_data);
+        }
+        if (params_->tree_interface_changed_fn) {
+          params_->tree_interface_changed_fn(id, ntree, params_->user_data);
+        }
+        if (params_->tree_output_changed_fn) {
+          params_->tree_output_changed_fn(id, ntree, params_->user_data);
+        }
+      }
+    }
+    FOREACH_NODETREE_END;
+  }
+
+  void update_rooted(Span<bNodeTree *> root_trees)
+  {
+    this->update();
+  }
+};
+
+}  // namespace blender::bke
+
 void BKE_node_tree_update_tag(bNodeTree *ntree)
 {
   ntree->changed_flag |= NTREE_CHANGED_ANY;
@@ -87,26 +127,14 @@ void BKE_node_tree_update_tag_interface(bNodeTree *ntree)
 
 void BKE_node_tree_update_main(Main *bmain, NodeTreeUpdateExtraParams *params)
 {
-  FOREACH_NODETREE_BEGIN (bmain, ntree, id) {
-    ntreeUpdateTree(bmain, ntree);
-    if (params) {
-      if (params->tree_changed_fn) {
-        params->tree_changed_fn(id, ntree, params->user_data);
-      }
-      if (params->tree_interface_changed_fn) {
-        params->tree_interface_changed_fn(id, ntree, params->user_data);
-      }
-      if (params->tree_output_changed_fn) {
-        params->tree_output_changed_fn(id, ntree, params->user_data);
-      }
-    }
-  }
-  FOREACH_NODETREE_END;
+  blender::bke::NodeTreeMainUpdater updater{bmain, params};
+  updater.update();
 }
 
 void BKE_node_tree_update_main_rooted(Main *bmain,
-                                      bNodeTree *UNUSED(ntree),
+                                      bNodeTree *ntree,
                                       NodeTreeUpdateExtraParams *params)
 {
-  BKE_node_tree_update_main(bmain, params);
+  blender::bke::NodeTreeMainUpdater updater{bmain, params};
+  updater.update_rooted({ntree});
 }



More information about the Bf-blender-cvs mailing list