Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2017-05-30 23:28:47 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-05-30 23:30:16 +0300
commite7fb013a60dd91caef1b1dd80f52b3996f06a21c (patch)
treeca9ec934203b7cc5e48f2fbc65b982487be91323 /source/blender/blenkernel
parentff0210319480ac9a77897bed716088a0bc18cd35 (diff)
Draw Manager: Add SceneLayerEngineData and use callbacks to clear runtime engine data
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/layer.c10
-rw-r--r--source/blender/blenkernel/intern/object.c10
2 files changed, 19 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index c0211c53021..d2fa09fa9e9 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -176,6 +176,16 @@ void BKE_scene_layer_free(SceneLayer *sl)
MEM_freeN(sl->properties_evaluated);
}
+ for (SceneLayerEngineData *sled = sl->drawdata.first; sled; sled = sled->next) {
+ if (sled->storage) {
+ if (sled->free) {
+ sled->free(sled->storage);
+ }
+ MEM_freeN(sled->storage);
+ }
+ }
+ BLI_freelistN(&sl->drawdata);
+
MEM_SAFE_FREE(sl->stats);
}
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index dd23b61f148..c24a6d3c791 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -454,7 +454,15 @@ void BKE_object_free(Object *ob)
}
GPU_lamp_free(ob);
- DRW_object_engine_data_free(ob);
+ for (ObjectEngineData *oed = ob->drawdata.first; oed; oed = oed->next) {
+ if (oed->storage) {
+ if (oed->free) {
+ oed->free(oed->storage);
+ }
+ MEM_freeN(oed->storage);
+ }
+ }
+ BLI_freelistN(&ob->drawdata);
BKE_sculptsession_free(ob);