diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-02-23 13:58:27 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-02-23 14:01:16 +0300 |
commit | 48ed9fcb78275cb82f844ed91f9fe4d15d2570bd (patch) | |
tree | 2eadfc536057849ff3f2af4beb2bb1ae744ca3bc /source/blender/render | |
parent | 9c68ffc3b4d26a2cc571ee1a55482dbc447c7e80 (diff) |
Fix memory leak in point density
The issue was happening when having unconnected point density which
will cache data but will not free it because there's no actual call
to the actual sampling.
Now the idea is to make sure cache is zeroed on file load and undo
and then caching via RNA will free the data if any exists. This could
leave us with a single copy of cache in the node if it's not used,
but it's quite small amount of memory and it's not leaking.
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/extern/include/RE_render_ext.h | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/pointdensity.c | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/source/blender/render/extern/include/RE_render_ext.h b/source/blender/render/extern/include/RE_render_ext.h index b67986666ea..075db3a8145 100644 --- a/source/blender/render/extern/include/RE_render_ext.h +++ b/source/blender/render/extern/include/RE_render_ext.h @@ -86,5 +86,7 @@ void RE_point_density_sample( const bool use_render_params, float *values); +void RE_point_density_free(struct PointDensity *pd); + #endif /* __RE_RENDER_EXT_H__ */ diff --git a/source/blender/render/intern/source/pointdensity.c b/source/blender/render/intern/source/pointdensity.c index 331830ad9d9..a4a0dd6e4cd 100644 --- a/source/blender/render/intern/source/pointdensity.c +++ b/source/blender/render/intern/source/pointdensity.c @@ -832,3 +832,8 @@ void RE_point_density_sample( free_pointdensity(pd); BLI_mutex_unlock(&sample_mutex); } + +void RE_point_density_free(struct PointDensity *pd) +{ + free_pointdensity(pd); +} |