From 69a486e038da6c430188cc46c48836f6949c0aca Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 9 Mar 2010 16:34:28 +0000 Subject: [PATCH] Fix render baking crashing on windows/mac. Problem was increased max number of threads caused Blender to run out of stack space, now just does dynamic allocation. --- source/blender/render/intern/source/rendercore.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index 9afd7505d6c..52dee6ba954 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -2627,7 +2627,7 @@ static void *do_bake_thread(void *bs_v) /* returns 0 if nothing was handled */ int RE_bake_shade_all_selected(Render *re, int type, Object *actob, short *do_update) { - BakeShade handles[BLENDER_MAX_THREADS]; + BakeShade *handles; ListBase threads; Image *ima; int a, vdone=0, usemask=0; @@ -2653,11 +2653,11 @@ int RE_bake_shade_all_selected(Render *re, int type, Object *actob, short *do_up BLI_init_threads(&threads, do_bake_thread, re->r.threads); + handles= MEM_callocN(sizeof(BakeShade)*re->r.threads, "BakeShade"); + /* get the threads running */ for(a=0; ar.threads; a++) { /* set defaults in handles */ - memset(&handles[a], 0, sizeof(BakeShade)); - handles[a].ssamp.shi[0].lay= re->scene->lay; if (type==RE_BAKE_SHADOW) { @@ -2737,8 +2737,11 @@ int RE_bake_shade_all_selected(Render *re, int type, Object *actob, short *do_up zbuf_free_span(handles[a].zspan); MEM_freeN(handles[a].zspan); } + + MEM_freeN(handles); BLI_end_threads(&threads); + return vdone; }