[Bf-blender-cvs] [133afc07b25] blender2.8: Compositor / Render Layer Node: Fix wrong layer after deleting view layers

Dalai Felinto noreply at git.blender.org
Tue Jan 30 21:33:27 CET 2018


Commit: 133afc07b2555574c804f4932bc34903d15f3535
Author: Dalai Felinto
Date:   Tue Jan 30 18:31:32 2018 -0200
Branches: blender2.8
https://developer.blender.org/rB133afc07b2555574c804f4932bc34903d15f3535

Compositor / Render Layer Node: Fix wrong layer after deleting view layers

I was calling the ntree syncing function too late. So the index of the layer
was -1 since it was no longer in the ListBase, making all RenderLayer nodes
to decrease their respective `custom1` (even going to negative sometimes).

===================================================================

M	source/blender/blenkernel/intern/node.c
M	source/blender/editors/scene/scene_edit.c

===================================================================

diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index cac2aab26dd..a5c3e6e4a43 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -3819,6 +3819,7 @@ bool BKE_node_tree_iter_step(struct NodeTreeIterStore *ntreeiter,
 
 void BKE_nodetree_remove_layer_n(bNodeTree *ntree, Scene *scene, const int layer_index)
 {
+	BLI_assert(layer_index != -1);
 	for (bNode *node = ntree->nodes.first; node; node = node->next) {
 		if (node->type == CMP_NODE_R_LAYERS && (Scene *)node->id == scene) {
 			if (node->custom1 == layer_index) {
diff --git a/source/blender/editors/scene/scene_edit.c b/source/blender/editors/scene/scene_edit.c
index 812f9a736bf..d0077df73e4 100644
--- a/source/blender/editors/scene/scene_edit.c
+++ b/source/blender/editors/scene/scene_edit.c
@@ -186,13 +186,15 @@ bool ED_scene_view_layer_delete(
 		return false;
 	}
 
+	/* We need to unset nodetrees before removing the layer, otherwise its index will be -1. */
+	view_layer_remove_unset_nodetrees(bmain, scene, layer);
+
 	BLI_remlink(&scene->view_layers, layer);
 	BLI_assert(BLI_listbase_is_empty(&scene->view_layers) == false);
 	scene->active_view_layer = 0;
 
 	ED_workspace_view_layer_unset(bmain, scene, layer, scene->view_layers.first);
 	BKE_workspace_view_layer_remove_references(bmain, layer);
-	view_layer_remove_unset_nodetrees(bmain, scene, layer);
 
 	BKE_view_layer_free(layer);



More information about the Bf-blender-cvs mailing list