From 71f939754184f3749aeababc6aca26850ee1d8e5 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 12 Sep 2011 17:27:02 +0000 Subject: Fixes #28599: Wrong re-assigning of layers in RenderLayer comp nodes when deleting a render layer. Also added the check of comp nodetree of all scenes, as others might also use that scene in their compositing! --- source/blender/editors/render/render_shading.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index 1b24d660411..75c2054091c 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -529,7 +529,7 @@ void SCENE_OT_render_layer_add(wmOperatorType *ot) static int render_layer_remove_exec(bContext *C, wmOperator *UNUSED(op)) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C), *sce; SceneRenderLayer *rl; int act= scene->r.actlay; @@ -541,15 +541,17 @@ static int render_layer_remove_exec(bContext *C, wmOperator *UNUSED(op)) MEM_freeN(rl); scene->r.actlay= 0; - - if(scene->nodetree) { - bNode *node; - for(node= scene->nodetree->nodes.first; node; node= node->next) { - if(node->type==CMP_NODE_R_LAYERS && node->id==NULL) { - if(node->custom1==act) - node->custom1= 0; - else if(node->custom1>act) - node->custom1--; + + for(sce = CTX_data_main(C)->scene.first; sce; sce = sce->id.next) { + if(sce->nodetree) { + bNode *node; + for(node = sce->nodetree->nodes.first; node; node = node->next) { + if(node->type==CMP_NODE_R_LAYERS && (Scene*)node->id==scene) { + if(node->custom1==act) + node->custom1= 0; + else if(node->custom1>act) + node->custom1--; + } } } } -- cgit v1.2.3