diff options
author | Brecht Van Lommel <brecht@blender.org> | 2022-11-01 23:00:56 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-11-02 19:16:50 +0300 |
commit | 31746e1baa14fd3a64053aec82a40ffc07f95973 (patch) | |
tree | d220facfd17d34de073fd36ac2c98af12e7992f6 /source/blender/render/intern/render_result.h | |
parent | 07ef428c6c41d74d267e2dbd505386e93f26de38 (diff) |
Fix memory leak with Freestyle renders after recent changes
Render stored a shallow copy of the scene view layers and views for thread
safety, without proper functions to free it. But with the CoW depsgraph this
scene is already a copy of the original and an additional copy is not needed.
Refactor to use the scene view layers and some other settings directly instead
of making a copy.
Diffstat (limited to 'source/blender/render/intern/render_result.h')
-rw-r--r-- | source/blender/render/intern/render_result.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/source/blender/render/intern/render_result.h b/source/blender/render/intern/render_result.h index 2e76efba8a3..6e971d45d31 100644 --- a/source/blender/render/intern/render_result.h +++ b/source/blender/render/intern/render_result.h @@ -136,10 +136,11 @@ void render_result_views_shallowdelete(struct RenderResult *rr); { \ int nr_; \ ViewLayer *iter_; \ - for (nr_ = 0, iter_ = static_cast<ViewLayer *>((re_)->view_layers.first); iter_ != NULL; \ + for (nr_ = 0, iter_ = static_cast<ViewLayer *>((re_)->scene->view_layers.first); \ + iter_ != NULL; \ iter_ = iter_->next, nr_++) { \ if (!G.background && (re_)->r.scemode & R_SINGLE_LAYER) { \ - if (nr_ != re->active_view_layer) { \ + if (!STREQ(iter_->name, re->single_view_layer)) { \ continue; \ } \ } \ |