[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