diff options
author | Ton Roosendaal <ton@blender.org> | 2006-03-09 00:12:48 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2006-03-09 00:12:48 +0300 |
commit | 973b442075f42837f2ec82e48f115ae2f6d12223 (patch) | |
tree | b543f3e0e250ed7c7c591c8cf99017ff06610896 /source | |
parent | 0bc3e9639b125c83fcfbe251779ee4571758f15a (diff) |
Compositing goodie: ESC now works to stop, but it will finish the node it
was working on.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/node.c | 10 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_node_types.h | 2 | ||||
-rw-r--r-- | source/blender/src/editnode.c | 5 |
3 files changed, 13 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 3e62cea99f0..0bf12e33c47 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -1878,7 +1878,7 @@ static int setExecutableNodes(bNodeTree *ntree, ThreadData *thd) } } totnode++; - printf("node needs exec %s\n", node->name); +// printf("node needs exec %s\n", node->name); /* tag for getExecutableNode() */ node->exec= 0; @@ -1970,8 +1970,14 @@ void ntreeCompositExecTree(bNodeTree *ntree, RenderData *rd, int do_preview) else PIL_sleep_ms(50); - /* check for ready ones, and if we need to continue */ rendering= 0; + /* test for ESC */ + if(ntree->test_break && ntree->test_break()) { + for(node= ntree->nodes.first; node; node= node->next) + node->exec |= NODE_READY; + } + + /* check for ready ones, and if we need to continue */ for(node= ntree->nodes.first; node; node= node->next) { if(node->exec & NODE_READY) { if((node->exec & NODE_FINISHED)==0) { diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index a3b234e4199..6192c32da1f 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -167,7 +167,7 @@ typedef struct bNodeTree { /* callbacks */ void (*timecursor)(int nr); void (*stats_draw)(char *str); - + int (*test_break)(void); } bNodeTree; /* ntree->type, index */ diff --git a/source/blender/src/editnode.c b/source/blender/src/editnode.c index 2b42faec607..6f3a3a4fb15 100644 --- a/source/blender/src/editnode.c +++ b/source/blender/src/editnode.c @@ -147,10 +147,13 @@ static void snode_handle_recalc(SpaceNode *snode) else if(snode->treetype==NTREE_COMPOSIT) { if(G.scene->use_nodes) { snode->nodetree->timecursor= set_timecursor; - + G.afbreek= 0; + snode->nodetree->test_break= blender_test_break; + ntreeCompositExecTree(snode->nodetree, &G.scene->r, 1); /* 1 is do_previews */ snode->nodetree->timecursor= NULL; + snode->nodetree->test_break= NULL; waitcursor(0); allqueue(REDRAWNODE, 1); |