From bc437a39130ddf401e5f0fbb0af272e200948384 Mon Sep 17 00:00:00 2001 From: AndreaRigoni Date: Tue, 17 Mar 2026 15:47:27 +0000 Subject: [PATCH] fix segfault --- src/Vtk/vtkViewport.cpp | 24 +++++------------------- src/Vtk/vtkViewport.h | 24 ++++++++++++++---------- 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/src/Vtk/vtkViewport.cpp b/src/Vtk/vtkViewport.cpp index 8dc587d..66e7b50 100644 --- a/src/Vtk/vtkViewport.cpp +++ b/src/Vtk/vtkViewport.cpp @@ -1,36 +1,29 @@ #include "vtkViewport.h" -#include -#include #include -#include #include #include -#include #include #include -#include #include #include #include -#include #include #include #include -#include #include namespace uLib { namespace Vtk { Viewport::Viewport() - : m_Renderer(vtkRenderer::New()) - , m_Annotation(vtkCornerAnnotation::New()) - , m_Marker(vtkOrientationMarkerWidget::New()) + : m_Renderer(vtkSmartPointer::New()) + , m_Annotation(vtkSmartPointer::New()) + , m_Marker(vtkSmartPointer::New()) , m_CameraWidget(nullptr) - , m_Colors(vtkNamedColors::New()) + , m_Colors(vtkSmartPointer::New()) { } @@ -38,14 +31,7 @@ Viewport::~Viewport() { if (m_Renderer) { m_Renderer->RemoveAllViewProps(); - m_Renderer->Clear(); } - - if (m_Annotation) m_Annotation->Delete(); - if (m_Marker) m_Marker->Delete(); - if (m_CameraWidget) m_CameraWidget->Delete(); - if (m_Renderer) m_Renderer->Delete(); - if (m_Colors) m_Colors->Delete(); } void Viewport::SetupPipeline(vtkRenderWindowInteractor* iren) @@ -112,7 +98,7 @@ void Viewport::SetupPipeline(vtkRenderWindowInteractor* iren) // Camera-orientation widget (VTK >= 9) #if VTK_MAJOR_VERSION >= 9 - m_CameraWidget = vtkCameraOrientationWidget::New(); + m_CameraWidget = vtkSmartPointer::New(); m_CameraWidget->SetParentRenderer(m_Renderer); m_CameraWidget->SetInteractor(iren); m_CameraWidget->On(); diff --git a/src/Vtk/vtkViewport.h b/src/Vtk/vtkViewport.h index 9b57a81..648720d 100644 --- a/src/Vtk/vtkViewport.h +++ b/src/Vtk/vtkViewport.h @@ -7,16 +7,20 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include -class vtkAxes; class vtkProp; class vtk3DWidget; class vtkRenderWindow; class vtkRenderWindowInteractor; -class vtkCameraOrientationWidget; -class vtkPlaneSource; -class vtkActor; -class vtkNamedColors; class vtkCamera; namespace uLib { @@ -57,17 +61,17 @@ protected: void UpdateGrid(); - vtkRenderer* m_Renderer; - vtkCornerAnnotation* m_Annotation; - vtkOrientationMarkerWidget* m_Marker; - vtkCameraOrientationWidget* m_CameraWidget; + vtkSmartPointer m_Renderer; + vtkSmartPointer m_Annotation; + vtkSmartPointer m_Marker; + vtkSmartPointer m_CameraWidget; vtkSmartPointer m_GridSource; vtkSmartPointer m_GridActor; vtkSmartPointer m_OriginAxes; vtkSmartPointer m_OriginAxesActor; - vtkNamedColors* m_Colors; + vtkSmartPointer m_Colors; }; } // namespace Vtk