From 8eb93724f56d579193209ad154241f4dce2d5208 Mon Sep 17 00:00:00 2001 From: Psomers3 <37300408+psomers3@users.noreply.github.com> Date: Fri, 30 Jul 2021 14:20:12 +0200 Subject: [PATCH] [SofaGL] Created persistent vparams and drawtool This is a temporary fix to avoid a bad memory leak. --- .../src/SofaPython3/SofaGL/Binding_DrawToolGL.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/bindings/Modules/src/SofaPython3/SofaGL/Binding_DrawToolGL.cpp b/bindings/Modules/src/SofaPython3/SofaGL/Binding_DrawToolGL.cpp index 1348362a..c8fd4a94 100644 --- a/bindings/Modules/src/SofaPython3/SofaGL/Binding_DrawToolGL.cpp +++ b/bindings/Modules/src/SofaPython3/SofaGL/Binding_DrawToolGL.cpp @@ -39,11 +39,17 @@ using DrawToolGL = sofa::gl::DrawToolGL; namespace py { using namespace pybind11; } +sofa::core::visual::VisualParams* vparam = nullptr; +sofa::gl::DrawToolGL *drawtool = new sofa::gl::DrawToolGL(); + void moduleAddDrawToolGL(pybind11::module& m) { m.def("draw", [](Node* node){ - auto* vparam = sofa::core::visual::VisualParams::defaultInstance(); - vparam->drawTool() = new sofa::gl::DrawToolGL(); - vparam->setSupported(sofa::core::visual::API_OpenGL); + if (!vparam) + { + vparam = sofa::core::visual::VisualParams::defaultInstance(); + vparam->drawTool() = drawtool; + vparam->setSupported(sofa::core::visual::API_OpenGL); + } sofa::simulation::getSimulation()->draw(vparam, node); }, doc::SofaGL::draw);