Delete problem in Renderer/RenderWindow/RenderWindowInteractor
This issue was created automatically from an original Mantis Issue. Further discussion may take place here.
This code seg faults in the second renWin->Render(). The attached code demonstrates the problem. I built this against today's VTK nightly checkout.
// This is Examples/Rendering/Cxx/Cylinder.cxx with one change. // We try to render the cylinder twice. We get a seg fault // in the second render. This seg fault goes away, if we // don't delete the vtkRenderer, vtkRenderWindow, and // vtkRenderWindowInteractor the first time we render.
#include "vtkCylinderSource.h" #include "vtkPolyDataMapper.h" #include "vtkActor.h" #include "vtkRenderer.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkProperty.h" #include "vtkCamera.h"
void Show(vtkPolyData *pd) { vtkPolyDataMapper *cylinderMapper = vtkPolyDataMapper::New(); cylinderMapper->SetInput(pd);
vtkActor *cylinderActor = vtkActor::New(); cylinderActor->SetMapper(cylinderMapper);
vtkRenderer *ren1 = vtkRenderer::New(); vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer(ren1); vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(renWin);
ren1->AddActor(cylinderActor); renWin->SetSize(200, 200);
ren1->GetActiveCamera()->Zoom(1.5); renWin->Render();
iren->Start();
cylinderMapper->Delete(); cylinderActor->Delete();
#define THIS_MAKES_THE_SECOND_RENDER_SEG_FAULT 1 #ifdef THIS_MAKES_THE_SECOND_RENDER_SEG_FAULT ren1->Delete(); renWin->Delete(); iren->Delete(); #endif }
int main(int argc, char *argv[]) { vtkCylinderSource *cylinder = vtkCylinderSource::New(); cylinder->SetResolution(8);
// The first render works
Show(cylinder->GetOutput());
// This one faults in renWin->Render if we deleted the renderer, // render window and interactor the first time.
Show(cylinder->GetOutput());
cylinder->Delete();
return 0; }