diff options
Diffstat (limited to 'source/blender')
24 files changed, 72 insertions, 82 deletions
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index d4b2755495e..cd1875f848b 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -193,10 +193,8 @@ typedef struct bNodeType { struct bNodeTree *(*group_edit_set)(struct bNode *node, int edit); void (*group_edit_clear)(struct bNode *node); - /* Generate a temporary list of internal links (bNodeLink), for muting and disconnect operators. - * Result must be freed by caller! - */ - ListBase (*internal_connect)(struct bNodeTree *, struct bNode *node); + /* Update the internal links list, for muting and disconnect operators. */ + void (*update_internal_links)(struct bNodeTree *, struct bNode *node); /* **** execution callbacks **** */ void *(*initexecfunc)(struct bNode *node); @@ -293,7 +291,7 @@ typedef struct bNodeTreeType { int (*validate_link)(struct bNodeTree *ntree, struct bNodeLink *link); /* Default internal linking. */ - ListBase (*internal_connect)(struct bNodeTree *, struct bNode *node); + void (*update_internal_links)(struct bNodeTree *, struct bNode *node); } bNodeTreeType; /* ************** GENERIC API, TREES *************** */ @@ -389,6 +387,7 @@ struct bNode *nodeGetActiveTexture(struct bNodeTree *ntree); void nodeUpdate(struct bNodeTree *ntree, struct bNode *node); int nodeUpdateID(struct bNodeTree *ntree, struct ID *id); +void nodeUpdateInternalLinks(struct bNodeTree *ntree, struct bNode *node); void nodeFreePreview(struct bNode *node); @@ -445,7 +444,7 @@ void node_type_exec_new(struct bNodeType *ntype, void (*freeexecfunc)(struct bNode *node, void *nodedata), void (*newexecfunc)(void *data, int thread, struct bNode *, void *nodedata, struct bNodeStack **, struct bNodeStack **)); -void node_type_internal_connect(struct bNodeType *ntype, ListBase (*internal_connect)(struct bNodeTree *, struct bNode *)); +void node_type_internal_links(struct bNodeType *ntype, void (*update_internal_links)(struct bNodeTree *, struct bNode *)); void node_type_gpu(struct bNodeType *ntype, int (*gpufunc)(struct GPUMaterial *mat, struct bNode *node, struct GPUNodeStack *in, struct GPUNodeStack *out)); void node_type_gpu_ext(struct bNodeType *ntype, int (*gpuextfunc)(struct GPUMaterial *mat, struct bNode *node, diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 5361ae6e769..5613f25fca4 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -347,6 +347,7 @@ bNode *nodeCopyNode(struct bNodeTree *ntree, struct bNode *node) { bNode *nnode = MEM_callocN(sizeof(bNode), "dupli node"); bNodeSocket *sock, *oldsock; + bNodeLink *link, *oldlink; *nnode = *node; /* can be called for nodes outside a node tree (e.g. clipboard) */ @@ -386,6 +387,15 @@ bNode *nodeCopyNode(struct bNodeTree *ntree, struct bNode *node) sock->cache = NULL; } + BLI_duplicatelist(&nnode->internal_links, &node->internal_links); + oldlink = node->internal_links.first; + for (link = nnode->internal_links.first; link; link = link->next, oldlink = oldlink->next) { + link->fromnode = nnode; + link->tonode = nnode; + link->fromsock = link->fromsock->new_sock; + link->tosock = link->tosock->new_sock; + } + /* don't increase node->id users, freenode doesn't decrement either */ if (node->typeinfo->copystoragefunc) @@ -524,15 +534,12 @@ void nodeRemSocketLinks(bNodeTree *ntree, bNodeSocket *sock) void nodeInternalRelink(bNodeTree *ntree, bNode *node) { bNodeLink *link, *link_next; - ListBase intlinks; - if (!node->typeinfo->internal_connect) + if (node->internal_links.first == NULL) return; - intlinks = node->typeinfo->internal_connect(ntree, node); - /* store link pointers in output sockets, for efficient lookup */ - for (link = intlinks.first; link; link = link->next) + for (link = node->internal_links.first; link; link = link->next) link->tosock->link = link; /* redirect downstream links */ @@ -566,8 +573,6 @@ void nodeInternalRelink(bNodeTree *ntree, bNode *node) if (link->tonode == node) nodeRemLink(ntree, link); } - - BLI_freelistN(&intlinks); } void nodeToView(bNode *node, float x, float y, float *rx, float *ry) @@ -989,6 +994,8 @@ void nodeFreeNode(bNodeTree *ntree, bNode *node) MEM_freeN(sock); } + BLI_freelistN(&node->internal_links); + nodeFreePreview(node); MEM_freeN(node); @@ -1817,6 +1824,8 @@ void ntreeUpdateTree(bNodeTree *ntree) ntreetype->update_node(ntree, node); else if (node->typeinfo->updatefunc) node->typeinfo->updatefunc(ntree, node); + + nodeUpdateInternalLinks(ntree, node); } } @@ -1854,6 +1863,9 @@ void nodeUpdate(bNodeTree *ntree, bNode *node) ntreetype->update_node(ntree, node); else if (node->typeinfo->updatefunc) node->typeinfo->updatefunc(ntree, node); + + nodeUpdateInternalLinks(ntree, node); + /* clear update flag */ node->update = 0; } @@ -1893,9 +1905,21 @@ int nodeUpdateID(bNodeTree *ntree, ID *id) } } + for (node = ntree->nodes.first; node; node = node->next) { + nodeUpdateInternalLinks(ntree, node); + } + return change; } +void nodeUpdateInternalLinks(bNodeTree *ntree, bNode *node) +{ + BLI_freelistN(&node->internal_links); + + if (node->typeinfo && node->typeinfo->update_internal_links) + node->typeinfo->update_internal_links(ntree, node); +} + /* ************* node type access ********** */ @@ -1968,7 +1992,7 @@ void node_type_base(bNodeTreeType *ttype, bNodeType *ntype, int type, const char /* Default muting stuff. */ if (ttype) - ntype->internal_connect = ttype->internal_connect; + ntype->update_internal_links = ttype->update_internal_links; /* default size values */ ntype->width = 140; @@ -2064,9 +2088,9 @@ void node_type_exec_new(struct bNodeType *ntype, ntype->newexecfunc = newexecfunc; } -void node_type_internal_connect(bNodeType *ntype, ListBase (*internal_connect)(bNodeTree *, bNode *)) +void node_type_internal_links(bNodeType *ntype, void (*update_internal_links)(bNodeTree *, bNode *)) { - ntype->internal_connect = internal_connect; + ntype->update_internal_links = update_internal_links; } void node_type_gpu(struct bNodeType *ntype, int (*gpufunc)(struct GPUMaterial *mat, struct bNode *node, struct GPUNodeStack *in, struct GPUNodeStack *out)) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 085424a27d2..0ae69bd2a56 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2413,6 +2413,8 @@ static void direct_link_nodetree(FileData *fd, bNodeTree *ntree) link_list(fd, &node->inputs); link_list(fd, &node->outputs); + link_list(fd, &node->internal_links); + if (node->type == CMP_NODE_MOVIEDISTORTION) { node->storage = newmclipadr(fd, node->storage); } diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index a162187e2cd..95886367897 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -720,7 +720,9 @@ static void write_nodetree(WriteData *wd, bNodeTree *ntree) write_node_socket(wd, sock); for (sock= node->outputs.first; sock; sock= sock->next) write_node_socket(wd, sock); - + + for (link = node->internal_links.first; link; link = link->next) + writestruct(wd, DATA, "bNodeLink", 1, link); if (node->storage) { /* could be handlerized at some point, now only 1 exception still */ diff --git a/source/blender/compositor/nodes/COM_MuteNode.cpp b/source/blender/compositor/nodes/COM_MuteNode.cpp index 1821844c6f5..4502dcf469c 100644 --- a/source/blender/compositor/nodes/COM_MuteNode.cpp +++ b/source/blender/compositor/nodes/COM_MuteNode.cpp @@ -108,27 +108,16 @@ void MuteNode::convertToOperations(ExecutionSystem *graph, CompositorContext *co /* mute node is also used for unknown nodes and couple of nodes in fast mode * can't use generic routines in that case */ - if ((editorNode->flag & NODE_MUTED) && editorNode->typeinfo->internal_connect) { + if (editorNode->flag & NODE_MUTED) { vector<InputSocket *> &inputsockets = this->getInputSockets(); vector<OutputSocket *> relinkedsockets; - bNodeTree *editorTree; SocketMap socketMap; - ListBase intlinks; bNodeLink *link; - if (this->getbNodeGroup()) { - editorTree = (bNodeTree *) getbNodeGroup()->id; - } - else { - editorTree = (bNodeTree *) context->getbNodeTree(); - } - - intlinks = editorNode->typeinfo->internal_connect(editorTree, editorNode); - this->fillSocketMap<OutputSocket>(outputsockets, socketMap); this->fillSocketMap<InputSocket>(inputsockets, socketMap); - for (link = (bNodeLink *) intlinks.first; link; link = link->next) { + for (link = (bNodeLink *) editorNode->internal_links.first; link; link = link->next) { if (link->fromnode == editorNode) { InputSocket *fromSocket = (InputSocket *) socketMap.find(link->fromsock)->second; OutputSocket *toSocket = (OutputSocket *) socketMap.find(link->tosock)->second; @@ -170,8 +159,6 @@ void MuteNode::convertToOperations(ExecutionSystem *graph, CompositorContext *co createDefaultOutput(graph, output); } } - - BLI_freelistN(&intlinks); } else { for (unsigned int index = 0; index < outputsockets.size(); index++) { diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c index 20afbf7ce65..05dcd55270b 100644 --- a/source/blender/editors/space_node/node_draw.c +++ b/source/blender/editors/space_node/node_draw.c @@ -506,25 +506,16 @@ int node_get_colorid(bNode *node) /* note: in node_edit.c is similar code, for untangle node */ static void node_draw_mute_line(View2D *v2d, SpaceNode *snode, bNode *node) { - ListBase links; bNodeLink *link; - if (node->typeinfo->internal_connect == NULL) - return; - - /* Get default muting links. */ - links = node->typeinfo->internal_connect(snode->edittree, node); - glEnable(GL_BLEND); glEnable(GL_LINE_SMOOTH); - for (link = links.first; link; link = link->next) + for (link = node->internal_links.first; link; link = link->next) node_draw_link_bezier(v2d, snode, link, TH_REDALERT, 0, TH_WIRE, 0, TH_WIRE); glDisable(GL_BLEND); glDisable(GL_LINE_SMOOTH); - - BLI_freelistN(&links); } /* this might have some more generic use */ diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 3635c1d0f03..f21f343ea2b 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -1622,7 +1622,7 @@ static int node_mute_exec(bContext *C, wmOperator *UNUSED(op)) for (node = snode->edittree->nodes.first; node; node = node->next) { /* Only allow muting of nodes having a mute func! */ - if ((node->flag & SELECT) && node->typeinfo->internal_connect) { + if ((node->flag & SELECT) && node->typeinfo->update_internal_links) { node->flag ^= NODE_MUTED; snode_update(snode, node); } diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index 3f1f4933585..aa382632b7b 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -167,6 +167,7 @@ typedef struct bNode { struct ID *id; /* optional link to libdata */ void *storage; /* custom data, must be struct, for storage in file */ struct bNode *original; /* the original node in the tree (for localized tree) */ + ListBase internal_links; /* list of cached internal links (input to output), for muted nodes and operators */ float locx, locy; /* root offset for drawing (parent space) */ float width, height; /* node custom width and height */ diff --git a/source/blender/nodes/composite/node_composite_tree.c b/source/blender/nodes/composite/node_composite_tree.c index 2d65d083131..9a7e587ff56 100644 --- a/source/blender/nodes/composite/node_composite_tree.c +++ b/source/blender/nodes/composite/node_composite_tree.c @@ -273,7 +273,7 @@ bNodeTreeType ntreeType_Composite = { /* update */ update, /* update_node */ update_node, /* validate_link */ NULL, - /* internal_connect */ node_internal_connect_default + /* update_internal_links */ node_update_internal_links_default }; diff --git a/source/blender/nodes/composite/nodes/node_composite_composite.c b/source/blender/nodes/composite/nodes/node_composite_composite.c index edbb627265d..cb932b6a8de 100644 --- a/source/blender/nodes/composite/nodes/node_composite_composite.c +++ b/source/blender/nodes/composite/nodes/node_composite_composite.c @@ -110,7 +110,7 @@ void register_node_type_cmp_composite(bNodeTreeType *ttype) #endif /* Do not allow muting for this node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/composite/nodes/node_composite_splitViewer.c b/source/blender/nodes/composite/nodes/node_composite_splitViewer.c index 70c1bf8f23f..73cf039c6df 100644 --- a/source/blender/nodes/composite/nodes/node_composite_splitViewer.c +++ b/source/blender/nodes/composite/nodes/node_composite_splitViewer.c @@ -167,7 +167,7 @@ void register_node_type_cmp_splitviewer(bNodeTreeType *ttype) #endif /* Do not allow muting for this node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/composite/nodes/node_composite_viewer.c b/source/blender/nodes/composite/nodes/node_composite_viewer.c index 6321b1def4d..938f75cf3f5 100644 --- a/source/blender/nodes/composite/nodes/node_composite_viewer.c +++ b/source/blender/nodes/composite/nodes/node_composite_viewer.c @@ -149,7 +149,7 @@ void register_node_type_cmp_viewer(bNodeTreeType *ttype) node_type_exec(&ntype, node_composit_exec_viewer); #endif - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/intern/node_common.c b/source/blender/nodes/intern/node_common.c index 0a7f619d13c..86ef8a14c12 100644 --- a/source/blender/nodes/intern/node_common.c +++ b/source/blender/nodes/intern/node_common.c @@ -385,16 +385,13 @@ void register_node_type_frame(bNodeTreeType *ttype) /* **************** REROUTE ******************** */ /* simple, only a single input and output here */ -static ListBase node_reroute_internal_connect(bNodeTree *ntree, bNode *node) +static void node_reroute_update_internal_links(bNodeTree *ntree, bNode *node) { bNodeLink *link; - ListBase ret; - - ret.first = ret.last = NULL; /* Security check! */ if (!ntree) - return ret; + return; link = MEM_callocN(sizeof(bNodeLink), "internal node link"); link->fromnode = node; @@ -403,9 +400,7 @@ static ListBase node_reroute_internal_connect(bNodeTree *ntree, bNode *node) link->tosock = node->outputs.first; /* internal link is always valid */ link->flag |= NODE_LINK_VALID; - BLI_addtail(&ret, link); - - return ret; + BLI_addtail(&node->internal_links, link); } static void node_reroute_init(bNodeTree *ntree, bNode *node, bNodeTemplate *UNUSED(ntemp)) @@ -424,7 +419,7 @@ void register_node_type_reroute(bNodeTreeType *ttype) node_type_base(ttype, ntype, NODE_REROUTE, "Reroute", NODE_CLASS_LAYOUT, 0); node_type_init(ntype, node_reroute_init); - node_type_internal_connect(ntype, node_reroute_internal_connect); + node_type_internal_links(ntype, node_reroute_update_internal_links); ntype->needs_free = 1; nodeRegisterType(ttype, ntype); diff --git a/source/blender/nodes/intern/node_exec.c b/source/blender/nodes/intern/node_exec.c index 3040e8589fd..3cc7ebf9337 100644 --- a/source/blender/nodes/intern/node_exec.c +++ b/source/blender/nodes/intern/node_exec.c @@ -177,15 +177,9 @@ bNodeTreeExec *ntree_exec_begin(bNodeTree *ntree) for (sock=node->inputs.first; sock; sock=sock->next) node_init_input_index(sock, &index); - if ((node->flag & NODE_MUTED || node->type == NODE_REROUTE) - && node->typeinfo->internal_connect) { - - ListBase internal_links = node->typeinfo->internal_connect(ntree, node); - + if (node->flag & NODE_MUTED || node->type == NODE_REROUTE) { for (sock=node->outputs.first; sock; sock=sock->next) - node_init_output_index(sock, &index, &internal_links); - - BLI_freelistN(&internal_links); + node_init_output_index(sock, &index, &node->internal_links); } else { for (sock=node->outputs.first; sock; sock=sock->next) diff --git a/source/blender/nodes/intern/node_util.c b/source/blender/nodes/intern/node_util.c index 27258c45fe5..342c366fb48 100644 --- a/source/blender/nodes/intern/node_util.c +++ b/source/blender/nodes/intern/node_util.c @@ -109,18 +109,15 @@ const char *node_filter_label(bNode *node) return IFACE_(name); } -ListBase node_internal_connect_default(bNodeTree *ntree, bNode *node) +void node_update_internal_links_default(bNodeTree *ntree, bNode *node) { - ListBase ret; bNodeSocket *fromsock_first=NULL, *tosock_first=NULL; /* used for fallback link if no other reconnections are found */ int datatype; int num_links_in = 0, num_links_out = 0, num_reconnect = 0; - ret.first = ret.last = NULL; - /* Security check! */ if (!ntree) - return ret; + return; for (datatype=0; datatype < NUM_SOCKET_TYPES; ++datatype) { bNodeSocket *fromsock, *tosock; @@ -170,7 +167,7 @@ ListBase node_internal_connect_default(bNodeTree *ntree, bNode *node) ilink->tosock = tosock; /* internal link is always valid */ ilink->flag |= NODE_LINK_VALID; - BLI_addtail(&ret, ilink); + BLI_addtail(&node->internal_links, ilink); ++num_reconnect; } @@ -188,8 +185,6 @@ ListBase node_internal_connect_default(bNodeTree *ntree, bNode *node) ilink->tosock = tosock_first; /* internal link is always valid */ ilink->flag |= NODE_LINK_VALID; - BLI_addtail(&ret, ilink); + BLI_addtail(&node->internal_links, ilink); } - - return ret; } diff --git a/source/blender/nodes/intern/node_util.h b/source/blender/nodes/intern/node_util.h index 95104df5fed..3134baa283c 100644 --- a/source/blender/nodes/intern/node_util.h +++ b/source/blender/nodes/intern/node_util.h @@ -62,7 +62,7 @@ const char *node_math_label(struct bNode *node); const char *node_vect_math_label(struct bNode *node); const char *node_filter_label(struct bNode *node); -ListBase node_internal_connect_default(struct bNodeTree *ntree, struct bNode *node); +void node_update_internal_links_default(struct bNodeTree *ntree, struct bNode *node); #endif diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c index ad907c317f8..76bc3b12690 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.c @@ -153,7 +153,7 @@ bNodeTreeType ntreeType_Shader = { /* update */ update, /* update_node */ NULL, /* validate_link */ NULL, - /* internal_connect */ node_internal_connect_default + /* update_internal_links */ node_update_internal_links_default }; /* GPU material from shader nodes */ diff --git a/source/blender/nodes/shader/nodes/node_shader_output.c b/source/blender/nodes/shader/nodes/node_shader_output.c index 8d8c1a903a5..6f7f900aecd 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output.c +++ b/source/blender/nodes/shader/nodes/node_shader_output.c @@ -92,7 +92,7 @@ void register_node_type_sh_output(bNodeTreeType *ttype) node_type_gpu(&ntype, gpu_shader_output); /* Do not allow muting output node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/shader/nodes/node_shader_output_lamp.c b/source/blender/nodes/shader/nodes/node_shader_output_lamp.c index f24f5a85ff0..ce406a8f5a1 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output_lamp.c +++ b/source/blender/nodes/shader/nodes/node_shader_output_lamp.c @@ -49,7 +49,7 @@ void register_node_type_sh_output_lamp(bNodeTreeType *ttype) node_type_gpu(&ntype, NULL); /* Do not allow muting output node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/shader/nodes/node_shader_output_material.c b/source/blender/nodes/shader/nodes/node_shader_output_material.c index 03b0559fd8e..f185e13010b 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output_material.c +++ b/source/blender/nodes/shader/nodes/node_shader_output_material.c @@ -62,7 +62,7 @@ void register_node_type_sh_output_material(bNodeTreeType *ttype) node_type_gpu(&ntype, node_shader_gpu_output_material); /* Do not allow muting output node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/shader/nodes/node_shader_output_world.c b/source/blender/nodes/shader/nodes/node_shader_output_world.c index 624805cd39f..953197ab2cd 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output_world.c +++ b/source/blender/nodes/shader/nodes/node_shader_output_world.c @@ -50,7 +50,7 @@ void register_node_type_sh_output_world(bNodeTreeType *ttype) node_type_gpu(&ntype, NULL); /* Do not allow muting output node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/texture/node_texture_tree.c b/source/blender/nodes/texture/node_texture_tree.c index 1bfd88d3af7..ba94531c259 100644 --- a/source/blender/nodes/texture/node_texture_tree.c +++ b/source/blender/nodes/texture/node_texture_tree.c @@ -134,7 +134,7 @@ bNodeTreeType ntreeType_Texture = { /* update */ update, /* update_node */ NULL, /* validate_link */ NULL, - /* internal_connect */ node_internal_connect_default + /* update_internal_links */ node_update_internal_links_default }; int ntreeTexTagAnimated(bNodeTree *ntree) diff --git a/source/blender/nodes/texture/nodes/node_texture_output.c b/source/blender/nodes/texture/nodes/node_texture_output.c index 5867dc03050..2f5efe8c45e 100644 --- a/source/blender/nodes/texture/nodes/node_texture_output.c +++ b/source/blender/nodes/texture/nodes/node_texture_output.c @@ -170,7 +170,7 @@ void register_node_type_tex_output(bNodeTreeType *ttype) node_type_exec(&ntype, exec); /* Do not allow muting output. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/texture/nodes/node_texture_viewer.c b/source/blender/nodes/texture/nodes/node_texture_viewer.c index bc31bef59d8..5cb8d8c438c 100644 --- a/source/blender/nodes/texture/nodes/node_texture_viewer.c +++ b/source/blender/nodes/texture/nodes/node_texture_viewer.c @@ -66,7 +66,7 @@ void register_node_type_tex_viewer(bNodeTreeType *ttype) node_type_exec(&ntype, exec); /* Do not allow muting viewer node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } |