Salome HOME
23599: EDF 17907 - Gnome freezes when suppressing horde of groups
[modules/smesh.git] / src / SMESH / SMESH_subMesh.cxx
index 57d0d338df5cd790b315ef4e456dcedae0a77b18..8ef0c8827cdd8c344487f1a042548a3ddbf3925d 100644 (file)
@@ -365,7 +365,7 @@ int SMESH_subMesh::computeCost() const
  */
 //=============================================================================
 
-const map < int, SMESH_subMesh * >& SMESH_subMesh::DependsOn()
+const std::map < int, SMESH_subMesh * >& SMESH_subMesh::DependsOn()
 {
   if ( _dependenceAnalysed || !_father->HasShapeToMesh() )
     return _mapDepend;
@@ -1683,6 +1683,8 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event)
           else
             updateDependantsState( SUBMESH_COMPUTED );
         }
+        // let algo clear its data gathered while algo->Compute()
+        algo->CheckHypothesis((*_father), _subShape, hyp_status);
       }
       break;
     case COMPUTE_CANCELED:               // nothing to do
@@ -2592,14 +2594,13 @@ const std::vector< SMESH_subMesh * > & SMESH_subMesh::GetAncestors() const
     SMESH_subMesh* me = const_cast< SMESH_subMesh* >( this );
     me->_ancestors.reserve( ancShapes.Extent() );
 
-    TopTools_MapOfShape map;
-
     // assure that all sub-meshes exist
     TopoDS_Shape mainShape = _father->GetShapeToMesh();
-    if (!mainShape.IsNull())
-      {
-        _father->GetSubMesh( _father->GetShapeToMesh() )->DependsOn();
-      }
+    if ( !mainShape.IsNull() )
+      _father->GetSubMesh( mainShape )->DependsOn();
+
+    TopTools_MapOfShape map;
+
     for ( TopTools_ListIteratorOfListOfShape it( ancShapes ); it.More(); it.Next() )
       if ( SMESH_subMesh* sm = _father->GetSubMeshContaining( it.Value() ))
         if ( map.Add( it.Value() ))