Salome HOME
Bug PAL7444 - display mesh takes a lot of more memory in 2.1.0 than in 2.0.0.
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_VTKUtils.cxx
index 15a7be0391e4de7175d487e57f992512a4c42547..89cebc3c456091b5c434993698eb8579379e459e 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "SMESHGUI_VTKUtils.h"
 #include "SMESHGUI_Utils.h"
+#include "SMESHGUI_Filter.h"
 
 #include <vtkRenderer.h>
 #include <vtkActorCollection.h>
@@ -243,6 +244,17 @@ namespace SMESH{
   void RemoveActor(QAD_StudyFrame *theStudyFrame, SMESH_Actor* theActor){
     if(VTKViewer_ViewFrame* aViewFrame = GetVtkViewFrame(theStudyFrame)){
       aViewFrame->RemoveActor(theActor);
+      if(theActor->hasIO()){
+       Handle(SALOME_InteractiveObject) anIO = theActor->getIO();
+       if(anIO->hasEntry()){
+         std::string anEntry = anIO->getEntry();
+         QAD_Study* aStudy = theStudyFrame->getStudy();
+         int aStudyId = aStudy->getStudyId();
+         TVisualObjCont::key_type aKey(aStudyId,anEntry);
+         VISUAL_OBJ_CONT.erase(aKey);
+       }
+      }
+      theActor->Delete();
       aViewFrame->Repaint();
     }
   }
@@ -469,6 +481,11 @@ namespace SMESH{
     theStyle->RemoveFilter(theId);
   }
 
+  void RemoveFilters(VTKViewer_InteractorStyleSALOME* theStyle){
+    for ( int id = SMESHGUI_NodeFilter; theStyle && id < SMESHGUI_LastFilter; id++ )
+      theStyle->RemoveFilter( id );
+  }
+
   bool IsValid(SALOME_Actor* theActor, int theCellId,
               VTKViewer_InteractorStyleSALOME* theStyle)
   {