[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49056] branches/ge_harmony/source/blender /blenkernel: Fixing some memory issues caused by the shader datablock.

Daniel Stokes kupomail at gmail.com
Thu Jul 19 08:36:01 CEST 2012


Revision: 49056
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49056
Author:   kupoman
Date:     2012-07-19 06:36:00 +0000 (Thu, 19 Jul 2012)
Log Message:
-----------
Fixing some memory issues caused by the shader datablock. Still have a couple more leaks to work.

Modified Paths:
--------------
    branches/ge_harmony/source/blender/blenkernel/BKE_shader.h
    branches/ge_harmony/source/blender/blenkernel/intern/library.c
    branches/ge_harmony/source/blender/blenkernel/intern/shader.c

Modified: branches/ge_harmony/source/blender/blenkernel/BKE_shader.h
===================================================================
--- branches/ge_harmony/source/blender/blenkernel/BKE_shader.h	2012-07-19 04:50:21 UTC (rev 49055)
+++ branches/ge_harmony/source/blender/blenkernel/BKE_shader.h	2012-07-19 06:36:00 UTC (rev 49056)
@@ -37,6 +37,7 @@
 #endif
 
 void init_shader(struct Shader *sh);
+void BKE_shader_free(Shader *sh);
 
 struct Shader *BKE_shader_add(const char *name);
 struct Shader *BKE_shader_copy(struct Shader *sh);

Modified: branches/ge_harmony/source/blender/blenkernel/intern/library.c
===================================================================
--- branches/ge_harmony/source/blender/blenkernel/intern/library.c	2012-07-19 04:50:21 UTC (rev 49055)
+++ branches/ge_harmony/source/blender/blenkernel/intern/library.c	2012-07-19 06:36:00 UTC (rev 49056)
@@ -110,6 +110,7 @@
 #include "BKE_utildefines.h"
 #include "BKE_movieclip.h"
 #include "BKE_mask.h"
+#include "BKE_shader.h"
 
 #include "RNA_access.h"
 
@@ -576,6 +577,7 @@
 	lb[a++] = &(main->wm);
 	lb[a++] = &(main->movieclip);
 	lb[a++] = &(main->mask);
+	lb[a++] = &(main->shader);
 	
 	lb[a] = NULL;
 
@@ -904,6 +906,9 @@
 		case ID_MSK:
 			BKE_mask_free((Mask *)id);
 			break;
+		case ID_SH:
+			BKE_shader_free((Shader *)id);
+			break;
 	}
 
 	if (id->properties) {

Modified: branches/ge_harmony/source/blender/blenkernel/intern/shader.c
===================================================================
--- branches/ge_harmony/source/blender/blenkernel/intern/shader.c	2012-07-19 04:50:21 UTC (rev 49055)
+++ branches/ge_harmony/source/blender/blenkernel/intern/shader.c	2012-07-19 06:36:00 UTC (rev 49056)
@@ -218,7 +218,7 @@
 			type = extract_token(&src);
 			name = extract_token(&src);
 
-			uni = (Uniform *)BLI_ghash_lookup(sh->uniform_cache, name);
+			uni = (Uniform *)BLI_ghash_pop(sh->uniform_cache, name, NULL);
 			if (!uni)
 				uni = uniform_init(type, name);
 			BLI_addtail(&sh->uniforms, uni);




More information about the Bf-blender-cvs mailing list