diff options
Diffstat (limited to 'source/blender/blenkernel/intern/layer.c')
-rw-r--r-- | source/blender/blenkernel/intern/layer.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c index 6b77b556a1b..d64a2ba585e 100644 --- a/source/blender/blenkernel/intern/layer.c +++ b/source/blender/blenkernel/intern/layer.c @@ -293,16 +293,12 @@ static void layer_collection_free(SceneLayer *sl, LayerCollection *lc) BLI_freelistN(&lc->object_bases); BLI_freelistN(&lc->overrides); + BKE_layer_collection_engine_settings_free(&lc->engine_settings); for (LayerCollection *nlc = lc->layer_collections.first; nlc; nlc = nlc->next) { layer_collection_free(sl, nlc); } - for (CollectionEngineSettings *cse = lc->engine_settings.first; cse; cse = cse->next) { - BLI_freelistN(&cse->properties); - } - BLI_freelistN(&lc->engine_settings); - BLI_freelistN(&lc->layer_collections); } @@ -661,6 +657,20 @@ void BKE_layer_collection_engine_settings_callback_free(void) } /** + * Free the CollectionEngineSettings ListBase + * + * Usually we would pass LayerCollection->engine_settings + * But depsgraph uses this for Object->collection_settings + */ +void BKE_layer_collection_engine_settings_free(ListBase *lb) +{ + for (CollectionEngineSettings *cse = lb->first; cse; cse = cse->next) { + BLI_freelistN(&cse->properties); + } + BLI_freelistN(lb); +} + +/** * Initialize the render settings for a single LayerCollection */ static void layer_collection_create_engine_settings(LayerCollection *lc) |