diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-02-02 19:15:26 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-02-02 19:15:26 +0300 |
commit | 8641fa13972e79d17ba35fd35ee7bcf1518007ff (patch) | |
tree | 8023f429132a6f0f5e915145e2bd1133a53b8133 | |
parent | b12d2fb922c539915b054ebd0d9bb091f6768ee8 (diff) |
Fix unfreed memory
-rw-r--r-- | source/blender/draw/intern/draw_cache.c | 26 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_cache.h | 2 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 2 |
3 files changed, 30 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_cache.c b/source/blender/draw/intern/draw_cache.c index d3e422abfd4..b41c232847c 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 b5d57e58a48..881fc2b529b 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 7fd32d07d33..b2766fb7163 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 |