[Bf-blender-cvs] [7cdcb76815b] master: Cleanup: Remove node tree runtime fields

Hans Goudey noreply at git.blender.org
Wed Nov 30 18:41:15 CET 2022


Commit: 7cdcb76815bb3f96b98f6443eecae35b22a236e7
Author: Hans Goudey
Date:   Wed Nov 30 11:41:01 2022 -0600
Branches: master
https://developer.blender.org/rB7cdcb76815bb3f96b98f6443eecae35b22a236e7

Cleanup: Remove node tree runtime fields

`done` was only used in one place, and `is_updating` was never read.
Generally we should avoid adding this sort of temporary data to longer
lived structs.

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

M	source/blender/blenkernel/BKE_node_runtime.hh
M	source/blender/editors/space_node/node_edit.cc
M	source/blender/editors/space_node/node_relationships.cc

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

diff --git a/source/blender/blenkernel/BKE_node_runtime.hh b/source/blender/blenkernel/BKE_node_runtime.hh
index 69e3b8915cc..ef32dcd8351 100644
--- a/source/blender/blenkernel/BKE_node_runtime.hh
+++ b/source/blender/blenkernel/BKE_node_runtime.hh
@@ -46,11 +46,6 @@ class bNodeTreeRuntime : NonCopyable, NonMovable {
    */
   uint8_t runtime_flag = 0;
 
-  /** Flag to prevent re-entrant update calls. */
-  short is_updating = 0;
-  /** Generic temporary flag for recursion check (DFS/BFS). */
-  short done = 0;
-
   /** Execution data.
    *
    * XXX It would be preferable to completely move this data out of the underlying node tree,
diff --git a/source/blender/editors/space_node/node_edit.cc b/source/blender/editors/space_node/node_edit.cc
index c6d1cc94c98..73d95f7af4b 100644
--- a/source/blender/editors/space_node/node_edit.cc
+++ b/source/blender/editors/space_node/node_edit.cc
@@ -2793,18 +2793,19 @@ static bool node_shader_script_update_poll(bContext *C)
 static bool node_shader_script_update_text_recursive(RenderEngine *engine,
                                                      RenderEngineType *type,
                                                      bNodeTree *ntree,
-                                                     Text *text)
+                                                     Text *text,
+                                                     Set<bNodeTree *> &done_trees)
 {
   bool found = false;
 
-  ntree->runtime->done = true;
+  done_trees.add_new(ntree);
 
   /* update each script that is using this text datablock */
   LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
     if (node->type == NODE_GROUP) {
       bNodeTree *ngroup = (bNodeTree *)node->id;
-      if (ngroup && !ngroup->runtime->done) {
-        found |= node_shader_script_update_text_recursive(engine, type, ngroup, text);
+      if (ngroup && !done_trees.contains(ngroup)) {
+        found |= node_shader_script_update_text_recursive(engine, type, ngroup, text, done_trees);
       }
     }
     else if (node->type == SH_NODE_SCRIPT && node->id == &text->id) {
@@ -2852,18 +2853,14 @@ static int node_shader_script_update_exec(bContext *C, wmOperator *op)
     Text *text = (Text *)CTX_data_pointer_get_type(C, "edit_text", &RNA_Text).data;
 
     if (text) {
-      /* clear flags for recursion check */
-      FOREACH_NODETREE_BEGIN (bmain, ntree, id) {
-        if (ntree->type == NTREE_SHADER) {
-          ntree->runtime->done = false;
-        }
-      }
-      FOREACH_NODETREE_END;
+
+      Set<bNodeTree *> done_trees;
 
       FOREACH_NODETREE_BEGIN (bmain, ntree, id) {
         if (ntree->type == NTREE_SHADER) {
-          if (!ntree->runtime->done) {
-            found |= node_shader_script_update_text_recursive(engine, type, ntree, text);
+          if (!done_trees.contains(ntree)) {
+            found |= node_shader_script_update_text_recursive(
+                engine, type, ntree, text, done_trees);
           }
         }
       }
diff --git a/source/blender/editors/space_node/node_relationships.cc b/source/blender/editors/space_node/node_relationships.cc
index a18b5c83857..f37061e5efb 100644
--- a/source/blender/editors/space_node/node_relationships.cc
+++ b/source/blender/editors/space_node/node_relationships.cc
@@ -902,8 +902,6 @@ static void node_link_exit(bContext &C, wmOperator &op, const bool apply_links)
   bNodeTree &ntree = *snode.edittree;
   bNodeLinkDrag *nldrag = (bNodeLinkDrag *)op.customdata;
 
-  /* avoid updates while applying links */
-  ntree.runtime->is_updating = true;
   for (bNodeLink *link : nldrag->links) {
     link->flag &= ~NODE_LINK_DRAGGED;
 
@@ -929,7 +927,6 @@ static void node_link_exit(bContext &C, wmOperator &op, const bool apply_links)
       nodeRemLink(&ntree, link);
     }
   }
-  ntree.runtime->is_updating = false;
 
   ED_node_tree_propagate_change(&C, bmain, &ntree);



More information about the Bf-blender-cvs mailing list