Fix T44691 Freestyle render crashes when Views is on (Blender Internal).

In pipeline.c the function add_freestyle() was supposed to be called once
per frame, but after the Multi-view merge the function are called as many
as the number of views.  There were however a few Freestyle parameters
that have to be initialized per frame, and initializing one of the
parameters for each view was causing double freeing of allocated memory
which was enough to result in a crash.
This commit is contained in:
2015-05-16 23:55:45 +09:00
parent a49534ae48
commit 4c0f0eb338
3 changed files with 57 additions and 32 deletions

View File

@@ -576,7 +576,7 @@ int FRS_is_freestyle_enabled(SceneRenderLayer *srl)
return (!(srl->layflag & SCE_LAY_DISABLE) && srl->layflag & SCE_LAY_FRS && displayed_layer_count(srl) > 0);
}
void FRS_init_stroke_rendering(Render *re)
void FRS_init_stroke_renderer(Render *re)
{
if (G.debug & G_DEBUG_FREESTYLE) {
cout << endl;
@@ -586,11 +586,15 @@ void FRS_init_stroke_rendering(Render *re)
}
init_view(re);
init_camera(re);
controller->ResetRenderCount();
}
void FRS_begin_stroke_rendering(Render *re)
{
init_camera(re);
}
Render *FRS_do_stroke_rendering(Render *re, SceneRenderLayer *srl, int render)
{
Render *freestyle_render = NULL;
@@ -645,7 +649,7 @@ Render *FRS_do_stroke_rendering(Render *re, SceneRenderLayer *srl, int render)
return freestyle_render;
}
void FRS_finish_stroke_rendering(Render * /*re*/)
void FRS_end_stroke_rendering(Render * /*re*/)
{
// clear canvas
controller->Clear();