[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14138] branches/soc-2007-joeedh/source/ blender/render/intern/source: multithreading tweak, and possible bugfix.

Joseph Eagar joeedh at gmail.com
Sun Mar 16 14:36:04 CET 2008


Revision: 14138
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14138
Author:   joeedh
Date:     2008-03-16 14:36:03 +0100 (Sun, 16 Mar 2008)

Log Message:
-----------
multithreading tweak, and possible bugfix.

Modified Paths:
--------------
    branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c
    branches/soc-2007-joeedh/source/blender/render/intern/source/pipeline.c

Modified: branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c
===================================================================
--- branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c	2008-03-16 12:42:54 UTC (rev 14137)
+++ branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c	2008-03-16 13:36:03 UTC (rev 14138)
@@ -164,6 +164,7 @@
 
 	for (tilet=data->tiles->first; tilet; tilet=tilet->next) {
 		if (data->re->test_break()) break;
+		if (tilet->assigned) continue;
 
 		BLI_lock_thread(LOCK_CUSTOM1);
 		if (tilet->assigned==0) {

Modified: branches/soc-2007-joeedh/source/blender/render/intern/source/pipeline.c
===================================================================
--- branches/soc-2007-joeedh/source/blender/render/intern/source/pipeline.c	2008-03-16 12:42:54 UTC (rev 14137)
+++ branches/soc-2007-joeedh/source/blender/render/intern/source/pipeline.c	2008-03-16 13:36:03 UTC (rev 14138)
@@ -2090,52 +2090,57 @@
 {
 	bNodeTree *ntree= re->scene->nodetree;
 	
-	/* INIT seeding, compositor can use random texture */
-	BLI_srandom(re->r.cfra);
-	
-	if(composite_needs_render(re->scene)) {
-		/* save memory... free all cached images */
-		ntreeFreeCache(ntree);
+	//if (ntree) {
+		/* INIT seeding, compositor can use random texture */
+		BLI_srandom(re->r.cfra);
 		
-		do_render_fields_blur_3d(re);
-	}
-	
-	/* swap render result */
-	if(re->r.scemode & R_SINGLE_LAYER)
-		pop_render_result(re);
-	
-	if(!re->test_break()) {
-		
-		if(ntree) {
-			ntreeCompositTagRender(re->scene);
-			ntreeCompositTagAnimated(ntree);
+		if(composite_needs_render(re->scene)) {
+			/* save memory... free all cached images */
+			ntreeFreeCache(ntree);
+			
+			do_render_fields_blur_3d(re);
 		}
 		
-		if(re->r.scemode & R_DOCOMP) {
-			/* checks if there are render-result nodes that need scene */
-			if((re->r.scemode & R_SINGLE_LAYER)==0)
-				ntree_render_scenes(re);
+		/* swap render result */
+		if(re->r.scemode & R_SINGLE_LAYER)
+			pop_render_result(re);
+		
+		if(!re->test_break()) {
 			
-			if(!re->test_break()) {
-				ntree->stats_draw= render_composit_stats;
-				ntree->test_break= re->test_break;
-				/* in case it was never initialized */
-				R.stats_draw= re->stats_draw;
+			if(ntree) {
+				ntreeCompositTagRender(re->scene);
+				ntreeCompositTagAnimated(ntree);
+			}
+			
+			if((re->r.scemode & R_DOCOMP) && ntree) {
+				/* checks if there are render-result nodes that need scene */
+				if((re->r.scemode & R_SINGLE_LAYER)==0)
+					ntree_render_scenes(re);
 				
+				if(!re->test_break()) {
+					ntree->stats_draw= render_composit_stats;
+					ntree->test_break= re->test_break;
+					/* in case it was never initialized */
+					R.stats_draw= re->stats_draw;
+					
+					if(re->r.scemode & R_FULL_SAMPLE) 
+						do_merge_fullsample(re, ntree);
+					else
+						ntreeCompositExecTree(ntree, &re->r, G.background==0);
+					
+					ntree->stats_draw= NULL;
+					ntree->test_break= NULL;
+				}
+			}
+			else 
 				if(re->r.scemode & R_FULL_SAMPLE) 
-					do_merge_fullsample(re, ntree);
-				else
-					ntreeCompositExecTree(ntree, &re->r, G.background==0);
-				
-				ntree->stats_draw= NULL;
-				ntree->test_break= NULL;
-			}
+					do_merge_fullsample(re, NULL);
+			
 		}
-		else 
-			if(re->r.scemode & R_FULL_SAMPLE) 
-				do_merge_fullsample(re, NULL);
-		
-	}
+	//} else {
+	//	if(re->r.scemode & R_FULL_SAMPLE) 
+	//		do_merge_fullsample(re, NULL);
+	//}
 
 	/* weak... the display callback wants an active renderlayer pointer... */
 	re->result->renlay= render_get_active_layer(re, re->result);





More information about the Bf-blender-cvs mailing list