[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57442] trunk/blender/source/blender/ render/intern/source/sss.c: Fix blender internal showing SSS preprocessing status message even if there isn 't

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Jun 13 20:29:56 CEST 2013


Revision: 57442
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57442
Author:   blendix
Date:     2013-06-13 18:29:56 +0000 (Thu, 13 Jun 2013)
Log Message:
-----------
Fix blender internal showing SSS preprocessing status message even if there isn't
any SSS material in the scene.

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/source/sss.c

Modified: trunk/blender/source/blender/render/intern/source/sss.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/sss.c	2013-06-13 17:11:09 UTC (rev 57441)
+++ trunk/blender/source/blender/render/intern/source/sss.c	2013-06-13 18:29:56 UTC (rev 57442)
@@ -993,26 +993,45 @@
 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)




More information about the Bf-blender-cvs mailing list