[Bf-blender-cvs] [1041fddef50] temp-lanpr-cleanup2: LANPR: Fix memory leak due to missing LANPR compiler flag in BKE.

YimingWu noreply at git.blender.org
Thu Nov 14 05:21:44 CET 2019


Commit: 1041fddef50942fddd1ba5e7df533fa430e11733
Author: YimingWu
Date:   Thu Nov 14 12:20:54 2019 +0800
Branches: temp-lanpr-cleanup2
https://developer.blender.org/rB1041fddef50942fddd1ba5e7df533fa430e11733

LANPR: Fix memory leak due to missing LANPR compiler flag in BKE.

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

M	source/blender/blenkernel/CMakeLists.txt
M	source/blender/draw/engines/lanpr/lanpr_cpu.c
M	source/blender/draw/engines/lanpr/lanpr_engine.c
M	source/blender/editors/lanpr/lanpr_cpu.c

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

diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt
index 023980292fa..1b23b8aeab8 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -598,6 +598,10 @@ if(WITH_FREESTYLE)
   add_definitions(-DWITH_FREESTYLE)
 endif()
 
+if(WITH_LANPR)
+  add_definitions(-DWITH_LANPR)
+endif()
+
 if(WITH_ALEMBIC)
   list(APPEND INC
     ../alembic
diff --git a/source/blender/draw/engines/lanpr/lanpr_cpu.c b/source/blender/draw/engines/lanpr/lanpr_cpu.c
index 551275fbdcf..ed34a12fd8e 100644
--- a/source/blender/draw/engines/lanpr/lanpr_cpu.c
+++ b/source/blender/draw/engines/lanpr/lanpr_cpu.c
@@ -164,7 +164,7 @@ void ED_lanpr_rebuild_all_command(SceneLANPR *lanpr)
   else {
     for (ll = lanpr->line_layers.first; ll; ll = ll->next) {
       if (ll->batch) {
-        GPU_batch_discard(ll->batch);
+        GPU_BATCH_DISCARD_SAFE(ll->batch);
       }
       lanpr_rebuild_render_draw_command(lanpr_share.render_buffer_shared, ll);
     }
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 3af1e2352f8..6c9cefe2605 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -161,6 +161,16 @@ static void lanpr_dpix_batch_free(void)
   }
 }
 
+static void lanpr_chain_batch_free(void)
+{
+  LANPR_RenderBuffer *rb = lanpr_share.render_buffer_shared;
+  if (rb) {
+    if (rb->chain_draw_batch) {
+      GPU_BATCH_DISCARD_SAFE(rb->DPIXIntersectionBatch);
+    }
+  }
+}
+
 static void lanpr_engine_free(void)
 {
   DRW_SHADER_FREE_SAFE(lanpr_share.multichannel_shader);
@@ -170,6 +180,7 @@ static void lanpr_engine_free(void)
   DRW_SHADER_FREE_SAFE(lanpr_share.software_shader);
 
   lanpr_dpix_batch_free();
+  lanpr_chain_batch_free();
 
   if (lanpr_share.render_buffer_shared) {
     LANPR_RenderBuffer *rb = lanpr_share.render_buffer_shared;
diff --git a/source/blender/editors/lanpr/lanpr_cpu.c b/source/blender/editors/lanpr/lanpr_cpu.c
index f44fb050fee..06d0af3b75f 100644
--- a/source/blender/editors/lanpr/lanpr_cpu.c
+++ b/source/blender/editors/lanpr/lanpr_cpu.c
@@ -208,8 +208,6 @@ static int lanpr_delete_line_layer_exec(struct bContext *C, struct wmOperator *U
 
   BLI_remlink(&scene->lanpr.line_layers, ll);
 
-  /*  if (ll->batch) GPU_batch_discard(ll->batch); */
-
   MEM_freeN(ll);
 
   DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE);



More information about the Bf-blender-cvs mailing list