Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-06-13 22:29:56 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-06-13 22:29:56 +0400
commit14cc35d1ab42f61cb8314e340a18a44e83fc1b79 (patch)
tree59ccb4ba086905eb7b36ce6c4d4cdb0c4ee21093 /source/blender/render
parent8b2c5e693c134cc5eb7d9a2da4f5d40cc06636ec (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.c29
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)