[Bf-blender-cvs] [bf6b04bf89f] temp-geometry-nodes-fields--fields-jacques: destruct all variables that are not outputs

Jacques Lucke noreply at git.blender.org
Tue Aug 31 13:40:56 CEST 2021


Commit: bf6b04bf89f15816775e5ca14333de445201226b
Author: Jacques Lucke
Date:   Tue Aug 31 13:40:45 2021 +0200
Branches: temp-geometry-nodes-fields--fields-jacques
https://developer.blender.org/rBbf6b04bf89f15816775e5ca14333de445201226b

destruct all variables that are not outputs

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

M	source/blender/functions/intern/field.cc

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

diff --git a/source/blender/functions/intern/field.cc b/source/blender/functions/intern/field.cc
index 55aa96bc50f..69a31699592 100644
--- a/source/blender/functions/intern/field.cc
+++ b/source/blender/functions/intern/field.cc
@@ -188,41 +188,20 @@ static void add_destructs(const Span<GField> fields,
                           VariableMap &unique_variables)
 {
   Set<MFVariable *> destructed_variables;
-  Set<FieldVariable *> outputs;
+  Set<const FieldVariable *> outputs;
   for (const GField &field : fields) {
     /* Currently input fields are handled separately in the evaluator. */
     BLI_assert(!field.is_input());
     outputs.add(&get_field_variable(field, unique_variables));
   }
 
-  Stack<const GField *> fields_to_visit;
-  for (const GField &field : fields) {
-    fields_to_visit.push(&field);
-  }
-
-  while (!fields_to_visit.is_empty()) {
-    const GField &field = *fields_to_visit.pop();
-    if (field.is_function()) {
-      const FieldFunction &function = field.function();
-      for (const GField &input_field : function.inputs()) {
-        fields_to_visit.push(&input_field);
+  for (Span<FieldVariable> variables : unique_variables.values()) {
+    for (const FieldVariable &variable : variables) {
+      /* Don't destruct the variable if it is used as an output parameter. */
+      if (!outputs.contains(&variable)) {
+        builder.add_destruct(*variable.mf_variable);
       }
     }
-
-    FieldVariable &variable = get_field_variable(field, unique_variables);
-
-    /* Don't destruct the same variable twice. */
-    if (destructed_variables.contains(variable.mf_variable)) {
-      continue;
-    }
-
-    /* Don't destruct the variable if it is used as an output parameter. */
-    if (outputs.contains(&variable)) {
-      continue;
-    }
-
-    builder.add_destruct(*variable.mf_variable);
-    destructed_variables.add_new(variable.mf_variable);
   }
 }



More information about the Bf-blender-cvs mailing list