diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2015-05-16 17:55:45 +0300 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2015-05-16 17:59:11 +0300 |
commit | 4c0f0eb33897464144735000837a99e86530e3cc (patch) | |
tree | 1fdfc2984139b60886559c63af8479af55f7db1f /source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp | |
parent | a49534ae486653ba802f8878a910d95d921a2a77 (diff) |
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.
Diffstat (limited to 'source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp')
-rw-r--r-- | source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp index 64c6bd33924..46724ff530a 100644 --- a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp +++ b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp @@ -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(); |