Fix: wrong field inferencing with unavailable sockets

This commit is contained in:
2021-11-11 18:26:40 +01:00
parent 3d9c8397fc
commit 393879f30c

View File

@@ -4722,6 +4722,9 @@ static OutputFieldDependency find_group_output_dependencies(
/* Propagate search further to the left. */ /* Propagate search further to the left. */
for (const InputSocketRef *origin_input_socket : for (const InputSocketRef *origin_input_socket :
gather_input_socket_dependencies(field_dependency, origin_node)) { gather_input_socket_dependencies(field_dependency, origin_node)) {
if (!origin_input_socket->is_available()) {
continue;
}
if (!field_state_by_socket_id[origin_input_socket->id()].is_single) { if (!field_state_by_socket_id[origin_input_socket->id()].is_single) {
if (handled_sockets.add(origin_input_socket)) { if (handled_sockets.add(origin_input_socket)) {
sockets_to_check.push(origin_input_socket); sockets_to_check.push(origin_input_socket);
@@ -4770,6 +4773,9 @@ static void propagate_data_requirements_from_right_to_left(
const Vector<const InputSocketRef *> connected_inputs = gather_input_socket_dependencies( const Vector<const InputSocketRef *> connected_inputs = gather_input_socket_dependencies(
field_dependency, *node); field_dependency, *node);
for (const InputSocketRef *input_socket : connected_inputs) { for (const InputSocketRef *input_socket : connected_inputs) {
if (!input_socket->is_available()) {
continue;
}
if (inferencing_interface.inputs[input_socket->index()] == if (inferencing_interface.inputs[input_socket->index()] ==
InputSocketFieldType::Implicit) { InputSocketFieldType::Implicit) {
if (!input_socket->is_logically_linked()) { if (!input_socket->is_logically_linked()) {