Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2009-01-27 22:32:44 +0300
committerTon Roosendaal <ton@blender.org>2009-01-27 22:32:44 +0300
commit764168d62a22659ac9947835a3308f7bc66fc1d5 (patch)
tree4a65fa9c4a2070d95092acc73658a4e131d7549c /source/blender/blenkernel/intern/node.c
parent92b0cbd6da1809efaaa28fe9e7271464631e8275 (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.c12
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;