[Bf-blender-cvs] [46f0b0798a0] temp-geometry-nodes-evaluator-refactor: make logging optional

Jacques Lucke noreply at git.blender.org
Sun Sep 4 12:53:41 CEST 2022


Commit: 46f0b0798a0ff9763ae2eff158d3b7b71df5800e
Author: Jacques Lucke
Date:   Sun Sep 4 12:49:07 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rB46f0b0798a0ff9763ae2eff158d3b7b71df5800e

make logging optional

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

M	source/blender/modifiers/intern/MOD_nodes.cc
M	source/blender/nodes/NOD_geometry_exec.hh
M	source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
M	source/blender/nodes/intern/node_geometry_exec.cc

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

diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index 2193973bc4d..1345fe723b1 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -1113,7 +1113,6 @@ static GeometrySet compute_geometry(const bNodeTree &btree,
                                     NodesModifierData *nmd,
                                     const ModifierEvalContext *ctx)
 {
-  UNUSED_VARS(logging_enabled);
 
   const blender::nodes::GeometryNodesLazyFunctionGraphInfo &lf_graph_info =
       blender::nodes::ensure_geometry_nodes_lazy_function_graph(btree);
@@ -1145,9 +1144,10 @@ static GeometrySet compute_geometry(const bNodeTree &btree,
   blender::nodes::GeoNodesModifierData geo_nodes_modifier_data;
   geo_nodes_modifier_data.depsgraph = ctx->depsgraph;
   geo_nodes_modifier_data.self_object = ctx->object;
-  /* TODO: Only use logging when enabled. */
   auto eval_log = std::make_unique<GeoModifierLog>();
-  geo_nodes_modifier_data.eval_log = eval_log.get();
+  if (logging_enabled(ctx)) {
+    geo_nodes_modifier_data.eval_log = eval_log.get();
+  }
   blender::nodes::GeoNodesLFUserData user_data;
   user_data.modifier_data = &geo_nodes_modifier_data;
   blender::nodes::ModifierContextStack modifier_context_stack{nullptr, nmd->modifier.name};
diff --git a/source/blender/nodes/NOD_geometry_exec.hh b/source/blender/nodes/NOD_geometry_exec.hh
index 8983f75a225..9c53d4414a5 100644
--- a/source/blender/nodes/NOD_geometry_exec.hh
+++ b/source/blender/nodes/NOD_geometry_exec.hh
@@ -145,13 +145,16 @@ class GeoNodeExecParams {
     }
   }
 
-  geo_eval_log::GeoTreeLogger &get_local_tree_logger() const
+  geo_eval_log::GeoTreeLogger *get_local_tree_logger() const
   {
     GeoNodesLFUserData *user_data = this->user_data();
     BLI_assert(user_data != nullptr);
     const ContextStack *context_stack = user_data->context_stack;
     BLI_assert(context_stack != nullptr);
-    return user_data->modifier_data->eval_log->get_local_tree_logger(*context_stack);
+    if (user_data->modifier_data->eval_log == nullptr) {
+      return nullptr;
+    }
+    return &user_data->modifier_data->eval_log->get_local_tree_logger(*context_stack);
   }
 
   /**
diff --git a/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc b/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
index 3e9cc255e4e..58bd0775558 100644
--- a/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
+++ b/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
@@ -118,10 +118,10 @@ class LazyFunctionForGeometryNode : public LazyFunction {
     node_.typeinfo->geometry_node_execute(geo_params);
     geo_eval_log::TimePoint end_time = geo_eval_log::Clock::now();
 
-    geo_eval_log::GeoTreeLogger *tree_logger =
-        &user_data->modifier_data->eval_log->get_local_tree_logger(*user_data->context_stack);
-    if (tree_logger != nullptr) {
-      tree_logger->node_execution_times.append_as(node_.name, start_time, end_time);
+    if (geo_eval_log::GeoModifierLog *modifier_log = user_data->modifier_data->eval_log) {
+      geo_eval_log::GeoTreeLogger &tree_logger = modifier_log->get_local_tree_logger(
+          *user_data->context_stack);
+      tree_logger.node_execution_times.append_as(node_.name, start_time, end_time);
     }
   }
 };
@@ -1083,6 +1083,9 @@ void GeometryNodesLazyFunctionLogger::log_socket_value(const fn::lazy_function::
 
   GeoNodesLFUserData *user_data = dynamic_cast<GeoNodesLFUserData *>(context.user_data);
   BLI_assert(user_data != nullptr);
+  if (user_data->modifier_data->eval_log == nullptr) {
+    return;
+  }
   geo_eval_log::GeoTreeLogger &tree_logger =
       user_data->modifier_data->eval_log->get_local_tree_logger(*user_data->context_stack);
   for (const bNodeSocket *bsocket : bsockets) {
diff --git a/source/blender/nodes/intern/node_geometry_exec.cc b/source/blender/nodes/intern/node_geometry_exec.cc
index 6bc84ee8cb7..9199dfc3cbb 100644
--- a/source/blender/nodes/intern/node_geometry_exec.cc
+++ b/source/blender/nodes/intern/node_geometry_exec.cc
@@ -15,8 +15,9 @@ namespace blender::nodes {
 
 void GeoNodeExecParams::error_message_add(const NodeWarningType type, std::string message) const
 {
-  geo_eval_log::GeoTreeLogger &tree_logger = this->get_local_tree_logger();
-  tree_logger.node_warnings.append({node_.name, {type, std::move(message)}});
+  if (geo_eval_log::GeoTreeLogger *tree_logger = this->get_local_tree_logger()) {
+    tree_logger->node_warnings.append({node_.name, {type, std::move(message)}});
+  }
 }
 
 void GeoNodeExecParams::used_named_attribute(std::string attribute_name,



More information about the Bf-blender-cvs mailing list