[Bf-blender-cvs] [8641fa1397] clay-engine: Fix unfreed memory

Clément Foucault noreply at git.blender.org
Thu Feb 2 17:16:44 CET 2017


Commit: 8641fa13972e79d17ba35fd35ee7bcf1518007ff
Author: Clément Foucault
Date:   Thu Feb 2 17:15:26 2017 +0100
Branches: clay-engine
https://developer.blender.org/rB8641fa13972e79d17ba35fd35ee7bcf1518007ff

Fix unfreed memory

===================================================================

M	source/blender/draw/intern/draw_cache.c
M	source/blender/draw/intern/draw_cache.h
M	source/blender/draw/intern/draw_manager.c

===================================================================

diff --git a/source/blender/draw/intern/draw_cache.c b/source/blender/draw/intern/draw_cache.c
index d3e422abfd..b41c232847 100644
--- a/source/blender/draw/intern/draw_cache.c
+++ b/source/blender/draw/intern/draw_cache.c
@@ -51,6 +51,32 @@ static struct DRWShapeCache{
 	Batch *drw_lamp;
 } SHC = {NULL};
 
+void DRW_shape_cache_free(void)
+{
+	if (SHC.drw_single_vertice)
+		Batch_discard_all(SHC.drw_single_vertice);
+	if (SHC.drw_fullscreen_quad)
+		Batch_discard_all(SHC.drw_fullscreen_quad);
+	if (SHC.drw_plain_axes)
+		Batch_discard_all(SHC.drw_plain_axes);
+	if (SHC.drw_single_arrow)
+		Batch_discard_all(SHC.drw_single_arrow);
+	if (SHC.drw_single_arrow_line)
+		Batch_discard_all(SHC.drw_single_arrow_line);
+	if (SHC.drw_cube)
+		Batch_discard_all(SHC.drw_cube);
+	if (SHC.drw_circle)
+		Batch_discard_all(SHC.drw_circle);
+	if (SHC.drw_empty_sphere)
+		Batch_discard_all(SHC.drw_empty_sphere);
+	if (SHC.drw_empty_cone)
+		Batch_discard_all(SHC.drw_empty_cone);
+	if (SHC.drw_arrows)
+		Batch_discard_all(SHC.drw_arrows);
+	if (SHC.drw_lamp)
+		Batch_discard_all(SHC.drw_lamp);
+}
+
 /* Quads */
 Batch *DRW_cache_fullscreen_quad_get(void)
 {
diff --git a/source/blender/draw/intern/draw_cache.h b/source/blender/draw/intern/draw_cache.h
index b5d57e58a4..881fc2b529 100644
--- a/source/blender/draw/intern/draw_cache.h
+++ b/source/blender/draw/intern/draw_cache.h
@@ -29,6 +29,8 @@
 struct Batch;
 struct Object;
 
+void DRW_shape_cache_free(void);
+
 /* Common Shapes */
 struct Batch *DRW_cache_fullscreen_quad_get(void);
 struct Batch *DRW_cache_single_vert_get(void);
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 7fd32d07d3..b2766fb716 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1134,5 +1134,7 @@ void DRW_engines_free(void)
 {
 	clay_engine_free();
 
+	DRW_shape_cache_free();
+
 	BLI_remlink(&R_engines, &viewport_clay_type);
 }
\ No newline at end of file




More information about the Bf-blender-cvs mailing list