diff options
author | Ton Roosendaal <ton@blender.org> | 2009-01-27 22:32:44 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-01-27 22:32:44 +0300 |
commit | 764168d62a22659ac9947835a3308f7bc66fc1d5 (patch) | |
tree | 4a65fa9c4a2070d95092acc73658a4e131d7549c /source/blender/blenkernel/intern/node.c | |
parent | 92b0cbd6da1809efaaa28fe9e7271464631e8275 (diff) |
2.5
Added support in threaded compositor to copy the viewer
image safely away, prevents crashing especially for
people using blender -E or redrawing viewer while it
composites.
(Note; reloading images in nodes, render result, and
probably other cases have to be checked still)
Diffstat (limited to 'source/blender/blenkernel/intern/node.c')
-rw-r--r-- | source/blender/blenkernel/intern/node.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index f6407e9416c..d41dda4c81e 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -2487,6 +2487,12 @@ bNodeTree *ntreeLocalize(bNodeTree *ntree) /* ensure new user input gets handled ok */ node->need_exec= 0; + if(ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { + if(node->id && (node->flag & NODE_DO_OUTPUT)) { + node->new_node->id= (ID *)BKE_image_copy((Image *)node->id); + } + } + for(sock= node->outputs.first; sock; sock= sock->next) { sock->new_sock->ns.data= sock->ns.data; @@ -2555,6 +2561,12 @@ void ntreeLocalMerge(bNodeTree *localtree, bNodeTree *ntree) lnode->preview= NULL; } + if(ELEM(lnode->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { + if(lnode->id && (lnode->flag & NODE_DO_OUTPUT)) { + BKE_image_merge((Image *)lnode->new_node->id, (Image *)lnode->id); + } + } + for(lsock= lnode->outputs.first; lsock; lsock= lsock->next) { if(outsocket_exists(lnode->new_node, lsock->new_sock)) { lsock->new_sock->ns.data= lsock->ns.data; |