diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 26ce81b7bd0..a277e8f578f 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -1407,7 +1407,7 @@ static void nodeInitPreview(bNode *node, int xsize, int ysize) if(node->preview==NULL) { node->preview= MEM_callocN(sizeof(bNodePreview), "node preview"); - printf("added preview %s\n", node->name); +// printf("added preview %s\n", node->name); } /* node previews can get added with variable size this way */ @@ -1876,10 +1876,8 @@ static bNode *getExecutableNode(bNodeTree *ntree) if((sock->link->fromnode->exec & NODE_READY)==0) break; } - if(sock==NULL) { - printf("exec %s\n", node->name); + if(sock==NULL) return node; - } } } return NULL; @@ -1926,7 +1924,13 @@ void ntreeCompositExecTree(bNodeTree *ntree, RenderData *rd, int do_preview) if(node) { if(ntree->timecursor) - ntree->timecursor(totnode--); + ntree->timecursor(totnode); + if(ntree->stats_draw) { + char str[64]; + sprintf(str, "Compositing %d %s\n", totnode, node->name); + ntree->stats_draw(str); + } + totnode--; node->new = (bNode *)&thdata; node->exec= NODE_PROCESSING; diff --git a/source/blender/blenkernel/intern/node_composite.c b/source/blender/blenkernel/intern/node_composite.c index 75f5a5ad663..eb23b533723 100644 --- a/source/blender/blenkernel/intern/node_composite.c +++ b/source/blender/blenkernel/intern/node_composite.c @@ -104,7 +104,8 @@ static CompBuf *alloc_compbuf(int sizex, int sizey, int type, int alloc) static CompBuf *dupalloc_compbuf(CompBuf *cbuf) { CompBuf *dupbuf= alloc_compbuf(cbuf->x, cbuf->y, cbuf->type, 1); - memcpy(dupbuf->rect, cbuf->rect, cbuf->type*sizeof(float)*cbuf->x*cbuf->y); + if(dupbuf) + memcpy(dupbuf->rect, cbuf->rect, cbuf->type*sizeof(float)*cbuf->x*cbuf->y); return dupbuf; } diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index a4552af3b20..9ad1ed32357 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -167,6 +167,7 @@ typedef struct bNodeTree { /* callbacks */ void (*timecursor)(int nr); + void (*stats_draw)(char *str); } bNodeTree; diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index a7f50bc3f4a..0435a7935bf 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -931,6 +931,14 @@ int composite_needs_render(Scene *sce) return 0; } +/* bad call... need to think over proper method still */ +static void render_composit_stats(char *str) +{ + R.i.infostr= str; + R.stats_draw(&R.i); + R.i.infostr= NULL; +} + static void do_render_final(Render *re) { /* we set start time here, for main Blender loops */ @@ -944,10 +952,11 @@ static void do_render_final(Render *re) do_render_seq(re->result, re->r.cfra); } else { + bNodeTree *ntree= re->scene->nodetree; if(composite_needs_render(re->scene)) { /* save memory... free all cached images */ - ntreeFreeCache(re->scene->nodetree); + ntreeFreeCache(ntree); /* now use renderdata and camera to set viewplane */ RE_SetCamera(re, re->scene->camera); @@ -960,17 +969,17 @@ static void do_render_final(Render *re) render_one_frame(re); } - if(!re->test_break() && re->scene->nodetree) { - ntreeCompositTagRender(re->scene->nodetree); - ntreeCompositTagAnimated(re->scene->nodetree); + if(!re->test_break() && ntree) { + ntreeCompositTagRender(ntree); + ntreeCompositTagAnimated(ntree); if(re->r.scemode & R_DOCOMP) { /* checks if there are render-result nodes that need scene */ ntree_render_scenes(re); - re->i.infostr= "Compositing"; - re->stats_draw(&re->i); - ntreeCompositExecTree(re->scene->nodetree, &re->r, G.background==0); + ntree->stats_draw= render_composit_stats; + ntreeCompositExecTree(ntree, &re->r, G.background==0); + ntree->stats_draw= NULL; } } }