diff options
Diffstat (limited to 'source/blender/nodes')
-rw-r--r-- | source/blender/nodes/composite/node_composite_tree.cc | 30 | ||||
-rw-r--r-- | source/blender/nodes/shader/node_shader_tree.c | 2 |
2 files changed, 9 insertions, 23 deletions
diff --git a/source/blender/nodes/composite/node_composite_tree.cc b/source/blender/nodes/composite/node_composite_tree.cc index 54967c82562..d601c426319 100644 --- a/source/blender/nodes/composite/node_composite_tree.cc +++ b/source/blender/nodes/composite/node_composite_tree.cc @@ -118,19 +118,6 @@ static void localize(bNodeTree *localtree, bNodeTree *ntree) } } - bNodeSocket *output_sock = (bNodeSocket *)node->outputs.first; - bNodeSocket *local_output_sock = (bNodeSocket *)local_node->outputs.first; - while (output_sock != nullptr) { - local_output_sock->cache = output_sock->cache; - output_sock->cache = nullptr; - /* This is actually link to original: someone was just lazy enough and tried to save few - * bytes in the cost of readability. */ - local_output_sock->new_sock = output_sock; - - output_sock = output_sock->next; - local_output_sock = local_output_sock->next; - } - node = node->next; local_node = local_node->next; } @@ -150,11 +137,11 @@ static void local_merge(Main *bmain, bNodeTree *localtree, bNodeTree *ntree) BKE_node_preview_merge_tree(ntree, localtree, true); for (lnode = (bNode *)localtree->nodes.first; lnode; lnode = lnode->next) { - if (ntreeNodeExists(ntree, lnode->new_node)) { + if (bNode *orig_node = nodeFindNodebyName(ntree, lnode->name)) { if (ELEM(lnode->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { if (lnode->id && (lnode->flag & NODE_DO_OUTPUT)) { /* image_merge does sanity check for pointers */ - BKE_image_merge(bmain, (Image *)lnode->new_node->id, (Image *)lnode->id); + BKE_image_merge(bmain, (Image *)orig_node->id, (Image *)lnode->id); } } else if (lnode->type == CMP_NODE_MOVIEDISTORTION) { @@ -162,20 +149,19 @@ static void local_merge(Main *bmain, bNodeTree *localtree, bNodeTree *ntree) * and to achieve much better performance on further calls this context should be * copied back to original node */ if (lnode->storage) { - if (lnode->new_node->storage) { - BKE_tracking_distortion_free((MovieDistortion *)lnode->new_node->storage); + if (orig_node->storage) { + BKE_tracking_distortion_free((MovieDistortion *)orig_node->storage); } - lnode->new_node->storage = BKE_tracking_distortion_copy( - (MovieDistortion *)lnode->storage); + orig_node->storage = BKE_tracking_distortion_copy((MovieDistortion *)lnode->storage); } } for (lsock = (bNodeSocket *)lnode->outputs.first; lsock; lsock = lsock->next) { - if (ntreeOutputExists(lnode->new_node, lsock->new_sock)) { - lsock->new_sock->cache = lsock->cache; + if (bNodeSocket *orig_socket = nodeFindSocket(orig_node, SOCK_OUT, lsock->identifier)) { + orig_socket->cache = lsock->cache; lsock->cache = nullptr; - lsock->new_sock = nullptr; + orig_socket = nullptr; } } } diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c index b19835fae19..8f4bffe5b30 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.c @@ -659,7 +659,7 @@ static bNode *ntree_shader_copy_branch(bNodeTree *ntree, LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { if (node->tmp_flag >= 0) { int id = node->tmp_flag; - nodes_copy[id] = BKE_node_copy_ex( + nodes_copy[id] = BKE_node_copy( ntree, node, LIB_ID_CREATE_NO_USER_REFCOUNT | LIB_ID_CREATE_NO_MAIN, false); nodes_copy[id]->tmp_flag = -2; /* Copy */ /* Make sure to clear all sockets links as they are invalid. */ |