]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
Moving creation/deletion of temporary folder as __del__ is not called (Unregister...
authorYoann Audouin <yoann.audouin@edf.fr>
Fri, 4 Nov 2022 14:20:53 +0000 (15:20 +0100)
committerYoann Audouin <yoann.audouin@edf.fr>
Fri, 4 Nov 2022 14:20:53 +0000 (15:20 +0100)
src/SMESH/SMESH_Gen.cxx
src/SMESH/SMESH_Mesh.cxx
src/SMESH/SMESH_Mesh.hxx

index 61d4fc010092a442bad28ac641216f65df412ddd..fdacc74185b0015588e804405f7f415199af974e 100644 (file)
@@ -289,6 +289,7 @@ bool SMESH_Gen::parallelComputeSubMeshes(
   // Pool of thread for computation
   // TODO: move when parallelMesh created
   aMesh.InitPoolThreads();
+  aMesh.CreateTmpFolder();
 
   TopAbs_ShapeEnum previousShapeType = TopAbs_VERTEX;
   int nbThreads = aMesh.GetNbThreads();
@@ -365,6 +366,7 @@ bool SMESH_Gen::parallelComputeSubMeshes(
   aMesh.wait();
 
   aMesh.GetMeshDS()->Modified();
+  aMesh.DeleteTmpFolder();
 
   return ret;
 };
index fb373c5932ae01ae20422fcbdd2ec9afbe2ff88c..6c55d1e7ba5da226da3bc931c9e06e179313508c 100644 (file)
@@ -124,9 +124,6 @@ SMESH_Mesh::SMESH_Mesh(int               theLocalId,
   _callUp        = NULL;
   _meshDS->ShapeToMesh( PseudoShape() );
   _subMeshHolder = new SubMeshHolder;
-  // Temporary folder that will be used by parallel computation
-  tmp_folder = fs::temp_directory_path()/fs::unique_path(fs::path("SMESH_%%%%-%%%%"));
-  fs::create_directories(tmp_folder);
 
   // assure unique persistent ID
   if ( _document->NbMeshes() > 1 )
@@ -243,9 +240,6 @@ SMESH_Mesh::~SMESH_Mesh()
   if(_pool)
     DeletePoolThreads();
 #endif
-#ifndef _DEBUG_
-    fs::remove_all(tmp_folder);
-#endif
 }
 
 //================================================================================
@@ -2575,3 +2569,28 @@ void SMESH_Mesh::getAncestorsSubMeshes (const TopoDS_Shape&            theSubSha
   // sort submeshes according to stored mesh order
   SortByMeshOrder( theSubMeshes );
 }
+
+
+//=============================================================================
+/*!
+ * \brief Build folder for parallel computation
+ */
+//=============================================================================
+void SMESH_Mesh::CreateTmpFolder()
+{
+  // Temporary folder that will be used by parallel computation
+  tmp_folder = fs::temp_directory_path()/fs::unique_path(fs::path("SMESH_%%%%-%%%%"));
+  fs::create_directories(tmp_folder);
+}
+//
+//=============================================================================
+/*!
+ * \brief Delete temporary folder used for parallel computation
+ */
+//=============================================================================
+void SMESH_Mesh::DeleteTmpFolder()
+{
+#ifndef _DEBUG_
+    fs::remove_all(tmp_folder);
+#endif
+}
index a59f7228a3ffc80d9fd9b33c84ed2bd84215b242..ffce714173bec6feba7015fa66a5825b3943340c 100644 (file)
@@ -418,6 +418,9 @@ class SMESH_EXPORT SMESH_Mesh
   bool IsParallel(){return _NbThreads > 0;}
 #endif
 
+  void CreateTmpFolder();
+  void DeleteTmpFolder();
+
   // Temporary folder used during parallel Computation
   boost::filesystem::path tmp_folder;
   #ifndef WIN32