diff options
-rw-r--r-- | source/blender/blenloader/intern/versioning_270.c | 8 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_edit.c | 5 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_scene.c | 3 |
3 files changed, 15 insertions, 1 deletions
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c index 7e058ae80f7..00fcd2d7591 100644 --- a/source/blender/blenloader/intern/versioning_270.c +++ b/source/blender/blenloader/intern/versioning_270.c @@ -288,4 +288,12 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main) linestyle->texstep = 1.0; } } + + { + Scene *scene; + for (scene = main->scene.first; scene; scene = scene->id.next) { + int num_layers = BLI_countlist(&scene->r.layers); + scene->r.actlay = min_ff(scene->r.actlay, num_layers - 1); + } + } } diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index fc0c82faba8..5bbe0c1c229 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -695,7 +695,12 @@ void ED_node_set_active(Main *bmain, bNodeTree *ntree, bNode *node) for (scene = bmain->scene.first; scene; scene = scene->id.next) { if (scene->nodetree && scene->use_nodes && ntreeHasTree(scene->nodetree, ntree)) { if (node->id == NULL || node->id == (ID *)scene) { + int num_layers = BLI_countlist(&scene->r.layers); scene->r.actlay = node->custom1; + /* Clamp the value, because it might have come from a different + * scene which could have more render layers than new one. + */ + scene->r.actlay = min_ff(scene->r.actlay, num_layers - 1); } } } diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 82dae1da498..8283490226d 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1059,7 +1059,8 @@ static int rna_RenderSettings_active_layer_index_get(PointerRNA *ptr) static void rna_RenderSettings_active_layer_index_set(PointerRNA *ptr, int value) { RenderData *rd = (RenderData *)ptr->data; - rd->actlay = value; + int num_layers = BLI_countlist(&rd->layers); + rd->actlay = min_ff(value, num_layers - 1); } static void rna_RenderSettings_active_layer_index_range(PointerRNA *ptr, int *min, int *max, |