diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-06-13 22:29:56 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-06-13 22:29:56 +0400 |
commit | 14cc35d1ab42f61cb8314e340a18a44e83fc1b79 (patch) | |
tree | 59ccb4ba086905eb7b36ce6c4d4cdb0c4ee21093 /source/blender/render | |
parent | 8b2c5e693c134cc5eb7d9a2da4f5d40cc06636ec (diff) |
Fix blender internal showing SSS preprocessing status message even if there isn't
any SSS material in the scene.
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/sss.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/source/blender/render/intern/source/sss.c b/source/blender/render/intern/source/sss.c index fbf11ae1cd3..f86942f7918 100644 --- a/source/blender/render/intern/source/sss.c +++ b/source/blender/render/intern/source/sss.c @@ -993,26 +993,45 @@ static void sss_free_tree(SSSData *sss) void make_sss_tree(Render *re) { Material *mat; + bool infostr_set = false; + const char *prevstr = NULL; free_sss(re); re->sss_hash= BLI_ghash_ptr_new("make_sss_tree gh"); - re->i.infostr = IFACE_("SSS preprocessing"); re->stats_draw(re->sdh, &re->i); - for (mat= re->main->mat.first; mat; mat= mat->id.next) - if (mat->id.us && (mat->flag & MA_IS_USED) && (mat->sss_flag & MA_DIFF_SSS)) + for (mat= re->main->mat.first; mat; mat= mat->id.next) { + if (mat->id.us && (mat->flag & MA_IS_USED) && (mat->sss_flag & MA_DIFF_SSS)) { + if (!infostr_set) { + prevstr = re->i.infostr; + re->i.infostr = IFACE_("SSS preprocessing"); + infostr_set = true; + } + sss_create_tree_mat(re, mat); + } + } /* XXX preview exception */ /* localizing preview render data is not fun for node trees :( */ if (re->main!=G.main) { - for (mat= G.main->mat.first; mat; mat= mat->id.next) - if (mat->id.us && (mat->flag & MA_IS_USED) && (mat->sss_flag & MA_DIFF_SSS)) + for (mat= G.main->mat.first; mat; mat= mat->id.next) { + if (mat->id.us && (mat->flag & MA_IS_USED) && (mat->sss_flag & MA_DIFF_SSS)) { + if (!infostr_set) { + prevstr = re->i.infostr; + re->i.infostr = IFACE_("SSS preprocessing"); + infostr_set = true; + } + sss_create_tree_mat(re, mat); + } + } } + if (infostr_set) + re->i.infostr = prevstr; } void free_sss(Render *re) |