From f342c7de452dad23a918a79fe034d06fa3c93a80 Mon Sep 17 00:00:00 2001 From: Lukas Toenne Date: Wed, 28 Mar 2012 07:48:08 +0000 Subject: [PATCH] Fix for the node tree nodes.new API function, this wasn't setting the scene and main context pointers in the node template, used by file output node. Also the file output node itself now works in case of scene==NULL (might happen in some contexts). --- source/blender/editors/space_node/node_templates.c | 2 ++ source/blender/makesrna/intern/rna_nodetree.c | 4 +++- .../composite/nodes/node_composite_outputFile.c | 13 +++++++++---- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/space_node/node_templates.c b/source/blender/editors/space_node/node_templates.c index 3d841b05632..049886b1d66 100644 --- a/source/blender/editors/space_node/node_templates.c +++ b/source/blender/editors/space_node/node_templates.c @@ -266,6 +266,8 @@ static void ui_node_link(bContext *C, void *arg_p, void *event_p) ntemp.type = arg->type; ntemp.ngroup = arg->ngroup; + ntemp.scene = CTX_data_scene(C); + ntemp.main = CTX_data_main(C); if (event == UI_NODE_LINK_DISCONNECT) node_socket_disconnect(bmain, ntree, node_to, sock_to); diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index bad993c9c72..a583b1e5959 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -578,7 +578,7 @@ static EnumPropertyItem *rna_Node_channel_itemf(bContext *UNUSED(C), PointerRNA return item; } -static bNode *rna_NodeTree_node_new(bNodeTree *ntree, bContext *UNUSED(C), ReportList *reports, +static bNode *rna_NodeTree_node_new(bNodeTree *ntree, bContext *C, ReportList *reports, int type, bNodeTree *group) { bNode *node; @@ -591,6 +591,8 @@ static bNode *rna_NodeTree_node_new(bNodeTree *ntree, bContext *UNUSED(C), Repor ntemp.type = type; ntemp.ngroup = group; + ntemp.scene = CTX_data_scene(C); + ntemp.main = CTX_data_main(C); node = nodeAddNode(ntree, &ntemp); if (node == NULL) { diff --git a/source/blender/nodes/composite/nodes/node_composite_outputFile.c b/source/blender/nodes/composite/nodes/node_composite_outputFile.c index e93c250e756..2eb68c787fb 100644 --- a/source/blender/nodes/composite/nodes/node_composite_outputFile.c +++ b/source/blender/nodes/composite/nodes/node_composite_outputFile.c @@ -90,15 +90,20 @@ int ntreeCompositOutputFileRemoveActiveSocket(bNodeTree *ntree, bNode *node) static void init_output_file(bNodeTree *ntree, bNode* node, bNodeTemplate *ntemp) { - RenderData *rd = &ntemp->scene->r; NodeImageMultiFile *nimf= MEM_callocN(sizeof(NodeImageMultiFile), "node image multi file"); + ImageFormatData *format = NULL; node->storage= nimf; - BLI_strncpy(nimf->base_path, rd->pic, sizeof(nimf->base_path)); - nimf->format = rd->im_format; + if (ntemp->scene) { + RenderData *rd = &ntemp->scene->r; + BLI_strncpy(nimf->base_path, rd->pic, sizeof(nimf->base_path)); + nimf->format = rd->im_format; + + format = &rd->im_format; + } /* add one socket by default */ - ntreeCompositOutputFileAddSocket(ntree, node, "Image", &rd->im_format); + ntreeCompositOutputFileAddSocket(ntree, node, "Image", format); } static void free_output_file(bNode *node)