[Bf-blender-cvs] [94d19d5ff50] master: GPencil: Fix unreported memory leak
Antonio Vazquez
noreply at git.blender.org
Tue Jan 7 14:14:31 CET 2020
Commit: 94d19d5ff505af0b63085ec76b85f86dcd97b127
Author: Antonio Vazquez
Date: Tue Jan 7 14:13:37 2020 +0100
Branches: master
https://developer.blender.org/rB94d19d5ff505af0b63085ec76b85f86dcd97b127
GPencil: Fix unreported memory leak
Thanks to @dfelinto for his help
===================================================================
M source/blender/blenkernel/intern/gpencil_modifier.c
M source/blender/draw/engines/gpencil/gpencil_cache_utils.c
===================================================================
diff --git a/source/blender/blenkernel/intern/gpencil_modifier.c b/source/blender/blenkernel/intern/gpencil_modifier.c
index fe087256d25..bc0c54ed96e 100644
--- a/source/blender/blenkernel/intern/gpencil_modifier.c
+++ b/source/blender/blenkernel/intern/gpencil_modifier.c
@@ -862,6 +862,14 @@ void BKE_gpencil_modifiers_calc(Depsgraph *depsgraph, Scene *scene, Object *ob)
const bool time_remap = BKE_gpencil_has_time_modifiers(ob);
int cfra_eval = (int)DEG_get_ctime(depsgraph);
+ /* Clear any previous evaluated data. */
+ if (ob->runtime.gpencil_tot_layers > 0) {
+ for (int i = 0; i < ob->runtime.gpencil_tot_layers; i++) {
+ bGPDframe *gpf_eval = &ob->runtime.gpencil_evaluated_frames[i];
+ BKE_gpencil_free_frame_runtime_data(gpf_eval);
+ }
+ }
+
/* Create array of evaluated frames equal to number of layers. */
ob->runtime.gpencil_tot_layers = BLI_listbase_count(&gpd->layers);
CLAMP_MIN(ob->runtime.gpencil_tot_layers, 1);
diff --git a/source/blender/draw/engines/gpencil/gpencil_cache_utils.c b/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
index f9df1342bf8..f21d96a304c 100644
--- a/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
@@ -349,7 +349,6 @@ void DRW_gpencil_freecache(struct Object *ob)
for (int i = 0; i < ob->runtime.gpencil_tot_layers; i++) {
bGPDframe *gpf_eval = &ob->runtime.gpencil_evaluated_frames[i];
BKE_gpencil_free_frame_runtime_data(gpf_eval);
- gpf_eval = NULL;
}
ob->runtime.gpencil_tot_layers = 0;
More information about the Bf-blender-cvs
mailing list