diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2014-07-01 18:35:09 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2014-07-01 18:36:53 +0400 |
commit | 6c6fa749f6ee0ff7941696973b4b378a321e5709 (patch) | |
tree | e8351585d7e0737e7f6cc55f72f280d71b4346c9 /source/blender/freestyle/intern | |
parent | 61e5f81e37d5365ebb9da49ea9b6f62f4110d054 (diff) |
Second attempt to fix T40833: Crash when rendering with freestyle.
The cause of the crash was identified in an uninitialized member variable
`Main->lock`. Now that struct Main has a few member variables whose
values are dynamically allocated, per-render Freestyle-specific Main data
structures will be allocated and released using `BKE_main_new()` and
`BKE_main_free()`, respectively.
This revision complements the commit rB6135556f4556.
Diffstat (limited to 'source/blender/freestyle/intern')
-rw-r--r-- | source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp | 2 | ||||
-rw-r--r-- | source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp | 10 |
2 files changed, 6 insertions, 6 deletions
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp index f135f2ebee6..845eaaad885 100644 --- a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp +++ b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp @@ -58,7 +58,7 @@ namespace Freestyle { BlenderStrokeRenderer::BlenderStrokeRenderer(Render *re, int render_count) : StrokeRenderer() { - freestyle_bmain = &re->freestyle_bmain; + freestyle_bmain = re->freestyle_bmain; // for stroke mesh generation _width = re->winx; diff --git a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp index 9474ce7994d..9c2b5a4037f 100644 --- a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp +++ b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp @@ -577,7 +577,7 @@ void FRS_init_stroke_rendering(Render *re) Render *FRS_do_stroke_rendering(Render *re, SceneRenderLayer *srl, int render) { - Main bmain = {0}; + Main *freestyle_bmain = re->freestyle_bmain; Render *freestyle_render = NULL; Text *text, *next_text; @@ -599,7 +599,7 @@ Render *FRS_do_stroke_rendering(Render *re, SceneRenderLayer *srl, int render) // - add style modules // - set parameters // - compute view map - prepare(&bmain, re, srl); + prepare(freestyle_bmain, re, srl); if (re->test_break(re->tbh)) { controller->CloseFile(); @@ -628,11 +628,11 @@ Render *FRS_do_stroke_rendering(Render *re, SceneRenderLayer *srl, int render) } // Free temp main (currently only text blocks are stored there) - for (text = (Text *) bmain.text.first; text; text = next_text) { + for (text = (Text *)freestyle_bmain->text.first; text; text = next_text) { next_text = (Text *) text->id.next; - BKE_text_unlink(&bmain, text); - BKE_libblock_free(&bmain, text); + BKE_text_unlink(freestyle_bmain, text); + BKE_libblock_free(freestyle_bmain, text); } return freestyle_render; |