Compositing goodie: ESC now works to stop, but it will finish the node it

was working on.
This commit is contained in:
Ton Roosendaal 2006-03-08 21:12:48 +00:00
parent 0bc3e9639b
commit 973b442075
3 changed files with 13 additions and 4 deletions

@ -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) {

@ -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 */

@ -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);