[Bf-blender-cvs] [92d1e6606c9] blender2.8: Draw Manager: Fix memory leak

mano-wii noreply at git.blender.org
Sat Nov 17 04:24:33 CET 2018


Commit: 92d1e6606c94a261349019fdcbb612069e0b990a
Author: mano-wii
Date:   Sat Nov 17 00:23:17 2018 -0200
Branches: blender2.8
https://developer.blender.org/rB92d1e6606c94a261349019fdcbb612069e0b990a

Draw Manager: Fix memory leak

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

M	source/blender/draw/engines/eevee/eevee_shaders.c

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

diff --git a/source/blender/draw/engines/eevee/eevee_shaders.c b/source/blender/draw/engines/eevee/eevee_shaders.c
index cf75130b2ce..40ea34f21e3 100644
--- a/source/blender/draw/engines/eevee/eevee_shaders.c
+++ b/source/blender/draw/engines/eevee/eevee_shaders.c
@@ -103,6 +103,7 @@ extern GlobalsUboStorage ts;
 
 void EEVEE_shaders_lightprobe_shaders_init(void)
 {
+	BLI_assert(e_data.probe_filter_glossy_sh == NULL);
 	char *shader_str = NULL;
 
 	shader_str = BLI_string_joinN(
@@ -269,23 +270,27 @@ GPUShader *EEVEE_shaders_velocity_resolve_sh_get(void)
 
 GPUShader *EEVEE_shaders_taa_resolve_sh_get(EEVEE_EffectsFlag enabled_effects)
 {
-	GPUShader *sh = NULL;
-	char *frag_str = BLI_string_joinN(
-	        datatoc_common_uniforms_lib_glsl,
-	        datatoc_common_view_lib_glsl,
-	        datatoc_bsdf_common_lib_glsl,
-	        datatoc_effect_temporal_aa_glsl);
-
+	GPUShader **sh;
+	char *define = NULL;
 	if (enabled_effects & EFFECT_TAA_REPROJECT) {
-		sh = e_data.taa_resolve_reproject_sh = DRW_shader_create_fullscreen(frag_str, "#define USE_REPROJECTION\n");
+		sh = &e_data.taa_resolve_reproject_sh;
+		define = "#define USE_REPROJECTION\n";
 	}
 	else {
-		sh = e_data.taa_resolve_sh = DRW_shader_create_fullscreen(frag_str, NULL);
+		sh = &e_data.taa_resolve_sh;
 	}
+	if (*sh == NULL) {
+		char *frag_str = BLI_string_joinN(
+		        datatoc_common_uniforms_lib_glsl,
+		        datatoc_common_view_lib_glsl,
+		        datatoc_bsdf_common_lib_glsl,
+		        datatoc_effect_temporal_aa_glsl);
 
-	MEM_freeN(frag_str);
+		*sh = DRW_shader_create_fullscreen(frag_str, define);
+		MEM_freeN(frag_str);
+	}
 
-	return sh;
+	return *sh;
 }
 
 void EEVEE_shaders_free(void)



More information about the Bf-blender-cvs mailing list