diff options
3 files changed, 15 insertions, 9 deletions
diff --git a/source/blender/freestyle/intern/application/Controller.cpp b/source/blender/freestyle/intern/application/Controller.cpp index 136fec3dd1c..beb85798223 100644 --- a/source/blender/freestyle/intern/application/Controller.cpp +++ b/source/blender/freestyle/intern/application/Controller.cpp @@ -864,10 +864,10 @@ bool Controller::getComputeSteerableViewMapFlag() const return _ComputeSteerableViewMap; } -void Controller::DrawStrokes() +int Controller::DrawStrokes() { if (_ViewMap == 0) - return; + return 0; if (G.debug & G_DEBUG_FREESTYLE) { cout << "\n=== Stroke drawing ===" << endl; @@ -875,12 +875,14 @@ void Controller::DrawStrokes() _Chrono.start(); _Canvas->Draw(); real d = _Chrono.stop(); + int strokeCount = _Canvas->getStrokeCount(); if (G.debug & G_DEBUG_FREESTYLE) { cout << "Strokes generation : " << d << endl; - cout << "Stroke count : " << _Canvas->getStrokeCount() << endl; + cout << "Stroke count : " << strokeCount << endl; } resetModified(); DeleteViewMap(); + return strokeCount; } void Controller::ResetRenderCount() diff --git a/source/blender/freestyle/intern/application/Controller.h b/source/blender/freestyle/intern/application/Controller.h index 6f3cb3b274b..154edaf1e53 100644 --- a/source/blender/freestyle/intern/application/Controller.h +++ b/source/blender/freestyle/intern/application/Controller.h @@ -75,7 +75,7 @@ public: void ComputeSteerableViewMap(); void saveSteerableViewMapImages(); void toggleEdgeTesselationNature(Nature::EdgeNature iNature); - void DrawStrokes(); + int DrawStrokes(); void ResetRenderCount(); Render *RenderStrokes(Render *re, bool render); void SwapStyleModules(unsigned i1, unsigned i2); diff --git a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp index dc88f69c95b..4d8c6a66d42 100644 --- a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp +++ b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp @@ -628,15 +628,19 @@ Render *FRS_do_stroke_rendering(Render *re, SceneRenderLayer *srl, int render) re->stats_draw(re->sdh, &re->i); re->i.infostr = NULL; g_freestyle.scene = re->scene; - controller->DrawStrokes(); - freestyle_render = controller->RenderStrokes(re, true); + int strokeCount = controller->DrawStrokes(); + if (strokeCount > 0) { + freestyle_render = controller->RenderStrokes(re, true); + } controller->CloseFile(); g_freestyle.scene = NULL; // composite result - FRS_composite_result(re, srl, freestyle_render); - RE_FreeRenderResult(freestyle_render->result); - freestyle_render->result = NULL; + if (freestyle_render) { + FRS_composite_result(re, srl, freestyle_render); + RE_FreeRenderResult(freestyle_render->result); + freestyle_render->result = NULL; + } } } |