[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