[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50028] branches/ge_harmony/source/blender /gpu/intern/gpu_extensions.c: Fixing up the uniform map on GPU_shaders, and trying to avoid memory problems.

Daniel Stokes kupomail at gmail.com
Sun Aug 19 23:28:42 CEST 2012


Revision: 50028
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50028
Author:   kupoman
Date:     2012-08-19 21:28:42 +0000 (Sun, 19 Aug 2012)
Log Message:
-----------
Fixing up the uniform map on GPU_shaders, and trying to avoid memory problems.

Modified Paths:
--------------
    branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c

Modified: branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c	2012-08-19 20:45:34 UTC (rev 50027)
+++ branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c	2012-08-19 21:28:42 UTC (rev 50028)
@@ -1276,7 +1276,10 @@
 		glDeleteObjectARB(shader->fragment);
 	if (shader->object)
 		glDeleteObjectARB(shader->object);
-	BLI_ghash_free(shader->uniforms, NULL, NULL);
+	if (shader->uniforms) {
+		BLI_ghash_free(shader->uniforms, (GHashKeyFreeFP)MEM_freeN, NULL);
+		shader->uniforms = NULL;
+	}
 	MEM_freeN(shader);
 }
 
@@ -1287,8 +1290,10 @@
 		bind = (int)BLI_ghash_lookup(shader->uniforms, name);
 	}
 	else {
-		bind = glGetUniformLocationARB(shader->object, name);
-		BLI_ghash_insert(shader->uniforms, (void*)name, (void*)bind);
+		char *key = MEM_mallocN(strlen(name)+sizeof(char), "Uniform Key");
+		strcpy(key, name);
+		bind = glGetUniformLocationARB(shader->object, key);
+		BLI_ghash_insert(shader->uniforms, (void*)key, (void*)bind);
 	}
 
 	return bind;




More information about the Bf-blender-cvs mailing list