diff options
author | Miika Hamalainen <blender@miikah.org> | 2013-11-22 17:25:19 +0400 |
---|---|---|
committer | Miika Hamalainen <blender@miikah.org> | 2013-11-22 17:25:19 +0400 |
commit | 5feb0d2bfe8f6723bf48073b1760b732bc6a5ceb (patch) | |
tree | 6a8dd68c9cff650d1bddec798bd83f23eb200668 /source/blender/render | |
parent | 885354daec2fa8181aeb27b637c80e4ee4c247df (diff) |
Fix T37359: Dynamic Paint deletes inactive texture from smoke domain when using a material as brush color
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/render_texture.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/source/blender/render/intern/source/render_texture.c b/source/blender/render/intern/source/render_texture.c index e8127b0e6b9..049d7e5a732 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); } |