21948: EDF SMESH : Memory is not freed when deleting a mesh

Delete fields in order of their declaration in the header - for easier check
This commit is contained in:
eap 2012-12-14 13:40:14 +00:00
parent 37eb451785
commit dcf5dee894
3 changed files with 26 additions and 31 deletions

View File

@ -91,7 +91,7 @@ SMESH_CellLabelActor::SMESH_CellLabelActor() {
callBackCommand->SetCallback(SMESH_CellLabelActor::ProcessEvents); callBackCommand->SetCallback(SMESH_CellLabelActor::ProcessEvents);
myTransformFilter->AddObserver("VTKViewer_TransformFilter::TransformationFinished", myTransformFilter->AddObserver("VTKViewer_TransformFilter::TransformationFinished",
callBackCommand); callBackCommand);
callBackCommand->Delete(); callBackCommand->Delete();
} }
@ -103,23 +103,22 @@ SMESH_CellLabelActor::~SMESH_CellLabelActor() {
//Deleting of cells numbering pipeline //Deleting of cells numbering pipeline
//--------------------------------------- //---------------------------------------
myCellsNumDataSet->Delete(); myCellsNumDataSet->Delete();
myCellsLabels->Delete();
// commented: porting to vtk 5.0
// myClsMaskPoints->UnRegisterAllOutputs();
myClsMaskPoints->Delete();
// commented: porting to vtk 5.0
// myCellCenters->UnRegisterAllOutputs();
myCellCenters->Delete();
myClsLabeledDataMapper->RemoveAllInputs(); myClsLabeledDataMapper->RemoveAllInputs();
myClsLabeledDataMapper->Delete(); myClsLabeledDataMapper->Delete();
// commented: porting to vtk 5.0 // commented: porting to vtk 5.0
// myClsSelectVisiblePoints->UnRegisterAllOutputs(); // myClsSelectVisiblePoints->UnRegisterAllOutputs();
myClsSelectVisiblePoints->Delete(); myClsSelectVisiblePoints->Delete();
// commented: porting to vtk 5.0
// myClsMaskPoints->UnRegisterAllOutputs();
myClsMaskPoints->Delete();
// commented: porting to vtk 5.0
// myCellCenters->UnRegisterAllOutputs();
myCellCenters->Delete();
myCellsLabels->Delete();
} }
@ -176,9 +175,9 @@ void SMESH_CellLabelActor::UpdateLabels() {
void SMESH_CellLabelActor::ProcessEvents(vtkObject* vtkNotUsed(theObject), void SMESH_CellLabelActor::ProcessEvents(vtkObject* vtkNotUsed(theObject),
unsigned long theEvent, unsigned long theEvent,
void* theClientData, void* theClientData,
void* vtkNotUsed(theCallData)) { void* vtkNotUsed(theCallData)) {
SMESH_CellLabelActor* self = reinterpret_cast<SMESH_CellLabelActor*>(theClientData); SMESH_CellLabelActor* self = reinterpret_cast<SMESH_CellLabelActor*>(theClientData);
if(self) if(self)
self->UpdateLabels(); self->UpdateLabels();

View File

@ -42,9 +42,9 @@ public:
static SMESH_CellLabelActor* New(); static SMESH_CellLabelActor* New();
static void ProcessEvents(vtkObject* theObject, static void ProcessEvents(vtkObject* theObject,
unsigned long theEvent, unsigned long theEvent,
void* theClientData, void* theClientData,
void* theCallData); void* theCallData);
vtkTypeMacro(SMESH_CellLabelActor, SMESH_DeviceActor); vtkTypeMacro(SMESH_CellLabelActor, SMESH_DeviceActor);

View File

@ -138,33 +138,29 @@ SMESH_DeviceActor
{ {
if(MYDEBUG) MESSAGE("~SMESH_DeviceActor - "<<this); if(MYDEBUG) MESSAGE("~SMESH_DeviceActor - "<<this);
myProperty->Delete();
myMapper->Delete(); myMapper->Delete();
myShrinkFilter->Delete(); myProperty->Delete();
myExtractUnstructuredGrid->Delete();
myMergeFilter->Delete();
myGeomFilter->Delete();
myExtractGeometry->Delete(); myExtractGeometry->Delete();
myTransformFilter->Delete(); myMergeFilter->Delete();
myExtractUnstructuredGrid->Delete();
for(int i = 0, iEnd = myPassFilter.size(); i < iEnd; i++){
myPassFilter[i]->Delete();
}
// Orientation of faces // Orientation of faces
myFaceOrientationFilter->Delete(); myFaceOrientationFilter->Delete();
myFaceOrientationDataMapper->RemoveAllInputs(); myFaceOrientationDataMapper->RemoveAllInputs();
myFaceOrientationDataMapper->Delete(); myFaceOrientationDataMapper->Delete();
myFaceOrientation->Delete(); myFaceOrientation->Delete();
myGeomFilter->Delete();
myTransformFilter->Delete();
for(int i = 0, iEnd = myPassFilter.size(); i < iEnd; i++)
myPassFilter[i]->Delete();
myShrinkFilter->Delete();
} }