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.
This commit is contained in:
Brecht Van Lommel 2010-03-09 16:34:28 +00:00
parent ad0e57a2a8
commit 69a486e038

@ -2627,7 +2627,7 @@ static void *do_bake_thread(void *bs_v)
/* returns 0 if nothing was handled */ /* returns 0 if nothing was handled */
int RE_bake_shade_all_selected(Render *re, int type, Object *actob, short *do_update) int RE_bake_shade_all_selected(Render *re, int type, Object *actob, short *do_update)
{ {
BakeShade handles[BLENDER_MAX_THREADS]; BakeShade *handles;
ListBase threads; ListBase threads;
Image *ima; Image *ima;
int a, vdone=0, usemask=0; 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); BLI_init_threads(&threads, do_bake_thread, re->r.threads);
handles= MEM_callocN(sizeof(BakeShade)*re->r.threads, "BakeShade");
/* get the threads running */ /* get the threads running */
for(a=0; a<re->r.threads; a++) { for(a=0; a<re->r.threads; a++) {
/* set defaults in handles */ /* set defaults in handles */
memset(&handles[a], 0, sizeof(BakeShade));
handles[a].ssamp.shi[0].lay= re->scene->lay; handles[a].ssamp.shi[0].lay= re->scene->lay;
if (type==RE_BAKE_SHADOW) { 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); zbuf_free_span(handles[a].zspan);
MEM_freeN(handles[a].zspan); MEM_freeN(handles[a].zspan);
} }
MEM_freeN(handles);
BLI_end_threads(&threads); BLI_end_threads(&threads);
return vdone; return vdone;
} }