Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2015-05-16 17:55:45 +0300
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2015-05-16 17:59:11 +0300
commit4c0f0eb33897464144735000837a99e86530e3cc (patch)
tree1fdfc2984139b60886559c63af8479af55f7db1f /source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
parenta49534ae486653ba802f8878a910d95d921a2a77 (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.cpp10
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();