diff options
author | Julian Eisel <eiseljulian@gmail.com> | 2017-06-09 18:16:39 +0300 |
---|---|---|
committer | Julian Eisel <eiseljulian@gmail.com> | 2017-06-09 18:17:28 +0300 |
commit | 2bb004e03d11e7d7a0f930ecad66c1d3b744eb39 (patch) | |
tree | bb5ca923e1a5b6f88ceec1dd131b01925dcb6ff1 /source/blender/blenkernel/intern/layer.c | |
parent | f35df9a25adec35a384ba45c5b2b2d5767e7e87d (diff) |
Fix crash when deleting active workspace render-layer
Also fixes some failing unit-tests for render-layers.
Diffstat (limited to 'source/blender/blenkernel/intern/layer.c')
-rw-r--r-- | source/blender/blenkernel/intern/layer.c | 35 |
1 files changed, 3 insertions, 32 deletions
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c index b088c7b4745..d600f753d75 100644 --- a/source/blender/blenkernel/intern/layer.c +++ b/source/blender/blenkernel/intern/layer.c @@ -128,39 +128,8 @@ SceneLayer *BKE_scene_layer_add(Scene *scene, const char *name) return sl; } -bool BKE_scene_layer_remove(Main *bmain, Scene *scene, SceneLayer *sl) -{ - const int act = BLI_findindex(&scene->render_layers, sl); - - if (act == -1) { - return false; - } - else if ( (scene->render_layers.first == scene->render_layers.last) && - (scene->render_layers.first == sl)) - { - /* ensure 1 layer is kept */ - return false; - } - - BLI_remlink(&scene->render_layers, sl); - - BKE_scene_layer_free(sl); - MEM_freeN(sl); - - scene->active_layer = 0; - /* TODO WORKSPACE: set active_layer to 0 */ - - for (Scene *sce = bmain->scene.first; sce; sce = sce->id.next) { - if (sce->nodetree) { - BKE_nodetree_remove_layer_n(sce->nodetree, scene, act); - } - } - - return true; -} - /** - * Free (or release) any data used by this SceneLayer (does not free the SceneLayer itself). + * Free (or release) any data used by this SceneLayer. */ void BKE_scene_layer_free(SceneLayer *sl) { @@ -200,6 +169,8 @@ void BKE_scene_layer_free(SceneLayer *sl) BLI_freelistN(&sl->drawdata); MEM_SAFE_FREE(sl->stats); + + MEM_freeN(sl); } /** |