diff options
author | Jacques Lucke <jacques@blender.org> | 2021-10-21 16:49:29 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-10-21 16:50:04 +0300 |
commit | 090be2775e3d7c0dc3f7956b05c7fb9a72c4bdfc (patch) | |
tree | c5783ec4b2ee736e810c0b82339fe9dced785255 /source/blender/nodes/NOD_geometry_nodes_eval_log.hh | |
parent | 6600ae3aa707d7e1c2728b9af50dc15e81fd7f2b (diff) |
Geometry Nodes: fix force-computing multiple non-output sockets
There were some issues when multiple inputs of the same node
were forced to be computed (e.g. for the spreadsheet), but none
of the node outputs (if existant) were used. Essentially the node
was marked as "finished" too early in this case.
This fix is necessary for the improved viewer node (T92167).
Diffstat (limited to 'source/blender/nodes/NOD_geometry_nodes_eval_log.hh')
-rw-r--r-- | source/blender/nodes/NOD_geometry_nodes_eval_log.hh | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/source/blender/nodes/NOD_geometry_nodes_eval_log.hh b/source/blender/nodes/NOD_geometry_nodes_eval_log.hh index ff8e137e341..ffe2a0d63c3 100644 --- a/source/blender/nodes/NOD_geometry_nodes_eval_log.hh +++ b/source/blender/nodes/NOD_geometry_nodes_eval_log.hh @@ -181,17 +181,19 @@ class LocalGeoLogger { /** The root logger class. */ class GeoLogger { private: - /** The entire geometry of sockets in this set should be cached, because e.g. the spreadsheet - * displays the data. We don't log the entire geometry at all places, because that would require - * way too much memory. */ - Set<DSocket> log_full_geometry_sockets_; + /** + * Log the entire value for these sockets, because they may be inspected afterwards. + * We don't log everything, because that would take up too much memory and cause significant + * slowdowns. + */ + Set<DSocket> log_full_sockets_; threading::EnumerableThreadSpecific<LocalGeoLogger> threadlocals_; friend LocalGeoLogger; public: - GeoLogger(Set<DSocket> log_full_geometry_sockets) - : log_full_geometry_sockets_(std::move(log_full_geometry_sockets)), + GeoLogger(Set<DSocket> log_full_sockets) + : log_full_sockets_(std::move(log_full_sockets)), threadlocals_([this]() { return LocalGeoLogger(*this); }) { } |