forked from bartvdbraak/blender
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:
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user