[Bf-blender-cvs] [fe4c2946565] functions: improve fgraph dependencies
Jacques Lucke
noreply at git.blender.org
Fri Jul 12 14:50:35 CEST 2019
Commit: fe4c2946565e287facef944f637bdf277395b2e6
Author: Jacques Lucke
Date: Fri Jul 12 12:24:43 2019 +0200
Branches: functions
https://developer.blender.org/rBfe4c2946565e287facef944f637bdf277395b2e6
improve fgraph dependencies
===================================================================
M source/blender/functions/backends/dependencies/fgraph_dependencies.cpp
===================================================================
diff --git a/source/blender/functions/backends/dependencies/fgraph_dependencies.cpp b/source/blender/functions/backends/dependencies/fgraph_dependencies.cpp
index 5d42e6c7f36..bdb949f5261 100644
--- a/source/blender/functions/backends/dependencies/fgraph_dependencies.cpp
+++ b/source/blender/functions/backends/dependencies/fgraph_dependencies.cpp
@@ -18,20 +18,23 @@ class FGraphDependencies : public DependenciesBody {
SmallSetVector<Object *> transform_dependencies;
for (uint i = 0; i < m_fgraph.outputs().size(); i++) {
DFGraphSocket socket = m_fgraph.outputs()[i];
- SmallVector<Object *> outputs = this->find_deps_and_outputs(socket, transform_dependencies);
+ SmallVector<Object *> outputs = this->find_deps_and_outputs(
+ socket, transform_dependencies, deps);
deps.set_output_objects(i, outputs);
}
deps.depends_on_transforms_of(transform_dependencies);
}
- SmallVector<Object *> find_deps_and_outputs(
- DFGraphSocket socket, SmallSetVector<Object *> &transform_dependencies) const
+ SmallVector<Object *> find_deps_and_outputs(DFGraphSocket socket,
+ SmallSetVector<Object *> &transform_dependencies,
+ ExternalDependenciesBuilder &deps) const
{
if (m_fgraph.inputs().contains(socket)) {
- return {};
+ return deps.get_input_objects(m_fgraph.inputs().index(socket));
}
else if (socket.is_input()) {
- return this->find_deps_and_outputs(m_graph->origin_of_input(socket), transform_dependencies);
+ return this->find_deps_and_outputs(
+ m_graph->origin_of_input(socket), transform_dependencies, deps);
}
else {
uint node_id = m_graph->node_id_of_output(socket);
@@ -39,7 +42,7 @@ class FGraphDependencies : public DependenciesBody {
DependenciesBody *body = fn->body<DependenciesBody>();
if (body == nullptr) {
for (auto input_socket : m_graph->inputs_of_node(node_id)) {
- this->find_deps_and_outputs(input_socket, transform_dependencies);
+ this->find_deps_and_outputs(input_socket, transform_dependencies, deps);
}
return {};
}
@@ -48,8 +51,8 @@ class FGraphDependencies : public DependenciesBody {
for (uint i = 0; i < fn->input_amount(); i++) {
inputs.add_multiple_new(
i,
- this->find_deps_and_outputs(m_graph->socket_of_node_input(node_id, i),
- transform_dependencies));
+ this->find_deps_and_outputs(
+ m_graph->socket_of_node_input(node_id, i), transform_dependencies, deps));
}
ExternalDependenciesBuilder builder(inputs);
body->dependencies(builder);
More information about the Bf-blender-cvs
mailing list