[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23954] trunk/blender/source/blender/ render/intern/source/pipeline.c: Fix #19678: full sample / save buffers was crashing due to two issues:

Brecht Van Lommel brecht at blender.org
Mon Oct 19 15:09:24 CEST 2009


Revision: 23954
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23954
Author:   blendix
Date:     2009-10-19 15:09:24 +0200 (Mon, 19 Oct 2009)

Log Message:
-----------
Fix #19678: full sample / save buffers was crashing due to two issues:
* Nested write lock on render results.
* RayHits pass was always enabled, commented it out now.

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

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c	2009-10-19 13:09:13 UTC (rev 23953)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c	2009-10-19 13:09:24 UTC (rev 23954)
@@ -416,7 +416,7 @@
 	if(strcmp(str, "Mist")==0)
 		return SCE_PASS_MIST;
 	
-	if(strcmp(str, "RAYHITS")==0)
+	if(strcmp(str, "RayHits")==0)
 		return SCE_PASS_RAYHITS;
 	return 0;
 }
@@ -545,7 +545,7 @@
 		rl->lay= srl->lay;
 		rl->lay_zmask= srl->lay_zmask;
 		rl->layflag= srl->layflag;
-		rl->passflag= srl->passflag | SCE_PASS_RAYHITS;
+		rl->passflag= srl->passflag; // for debugging: srl->passflag|SCE_PASS_RAYHITS;
 		rl->pass_xor= srl->pass_xor;
 		rl->light_override= srl->light_override;
 		rl->mat_override= srl->mat_override;
@@ -589,7 +589,7 @@
 			render_layer_add_pass(rr, rl, 1, SCE_PASS_INDEXOB);
 		if(srl->passflag  & SCE_PASS_MIST)
 			render_layer_add_pass(rr, rl, 1, SCE_PASS_MIST);
-		if(rl->passflag  & SCE_PASS_RAYHITS)
+		if(rl->passflag & SCE_PASS_RAYHITS)
 			render_layer_add_pass(rr, rl, 4, SCE_PASS_RAYHITS);
 		
 	}
@@ -1704,11 +1704,10 @@
 		
 	}
 	
-	BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
-
 	if(re->result->exrhandle) {
 		RenderResult *rr;
 
+		BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
 		save_empty_result_tiles(re);
 		
 		for(rr= re->result; rr; rr= rr->next) {
@@ -1718,11 +1717,11 @@
 		
 		free_render_result(&re->fullresult, re->result);
 		re->result= NULL;
+
+		BLI_rw_mutex_unlock(&re->resultmutex);
 		
 		read_render_result(re, 0);
 	}
-
-	BLI_rw_mutex_unlock(&re->resultmutex);
 	
 	/* unset threadsafety */
 	g_break= 0;





More information about the Bf-blender-cvs mailing list