[Bf-blender-cvs] [5feb0d2] master: Fix T37359: Dynamic Paint deletes inactive texture from smoke domain when using a material as brush color

Miika Hamalainen noreply at git.blender.org
Fri Nov 22 14:41:33 CET 2013


Commit: 5feb0d2bfe8f6723bf48073b1760b732bc6a5ceb
Author: Miika Hamalainen
Date:   Fri Nov 22 15:25:19 2013 +0200
http://developer.blender.org/rB5feb0d2bfe8f6723bf48073b1760b732bc6a5ceb

Fix T37359: Dynamic Paint deletes inactive texture from smoke domain when using a material as brush color

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

M	source/blender/render/intern/source/render_texture.c

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

diff --git a/source/blender/render/intern/source/render_texture.c b/source/blender/render/intern/source/render_texture.c
index e8127b0..049d7e5 100644
--- a/source/blender/render/intern/source/render_texture.c
+++ b/source/blender/render/intern/source/render_texture.c
@@ -3558,12 +3558,15 @@ Material *RE_init_sample_material(Material *orig_mat, Scene *scene)
 
 	/* strip material copy from unsupported flags */
 	for (tex_nr=0; tex_nr<MAX_MTEX; tex_nr++) {
-		if (mat->septex & (1<<tex_nr)) continue;
 	
 		if (mat->mtex[tex_nr]) {
 			MTex *mtex = mat->mtex[tex_nr];
 
-			if (!mtex->tex) continue;
+			/* just in case make all non-used mtexes empty*/
+			Tex *cur_tex = mtex->tex;
+			mtex->tex = NULL;
+
+			if (mat->septex & (1<<tex_nr) || !cur_tex) continue;
 
 			/* only keep compatible texflags */
 			mtex->texflag = mtex->texflag & (MTEX_RGBTOINT | MTEX_STENCIL | MTEX_NEGATIVE | MTEX_ALPHAMIX);
@@ -3598,7 +3601,7 @@ Material *RE_init_sample_material(Material *orig_mat, Scene *scene)
 			}
 
 			/* copy texture */
-			tex= mtex->tex = localize_texture(mtex->tex);
+			tex= mtex->tex = localize_texture(cur_tex);
 
 			/* update texture anims */
 			BKE_animsys_evaluate_animdata(scene, &tex->id, tex->adt, BKE_scene_frame_get(scene), ADT_RECALC_ANIM);
@@ -3646,7 +3649,8 @@ void RE_free_sample_material(Material *mat)
 		}
 	}
 
-	BKE_material_free(mat);
+	/* don't update user counts as we are freeing a duplicate */
+	BKE_material_free_ex(mat, false);
 	MEM_freeN(mat);
 }




More information about the Bf-blender-cvs mailing list