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>2009-10-19 17:09:24 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2009-10-19 17:09:24 +0400
commit60c50dda70cb8354660e92775033086d43a2ce3b (patch)
treedc942473ea7c44334393d0b9e3f4ed231c95696e /source/blender/render
parent4c6b66132ee6357160d1e7015e095e6c58c7dc15 (diff)
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.
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/intern/source/pipeline.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 52adecde58e..5dcfb12a080 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -416,7 +416,7 @@ static int passtype_from_name(char *str)
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 @@ static RenderResult *new_render_result(Render *re, rcti *partrct, int crop, int
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 @@ static RenderResult *new_render_result(Render *re, rcti *partrct, int crop, int
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 @@ static void threaded_tile_processor(Render *re)
}
- 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 @@ static void threaded_tile_processor(Render *re)
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;