X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH%2FSMESH_Mesh.cxx;h=4a00711b7a6f76286586fd9afc2cf8cc7fed0186;hp=4c1383356d4adc41e1f8e0f56bd34e251d8fa287;hb=072a73120b6db7bba2389aa7ada0cde20e22ee57;hpb=2cd148d0668de3bfbeeceeb7df1995bb5b39475b diff --git a/src/SMESH/SMESH_Mesh.cxx b/src/SMESH/SMESH_Mesh.cxx index 4c1383356..4a00711b7 100644 --- a/src/SMESH/SMESH_Mesh.cxx +++ b/src/SMESH/SMESH_Mesh.cxx @@ -69,9 +69,12 @@ #include "SMESH_TryCatch.hxx" // include after OCCT headers! #include "Utils_ExceptHandlers.hxx" - +#ifndef WIN32 #include #include +#else +#include +#endif using namespace std; @@ -139,11 +142,23 @@ SMESH_Mesh::SMESH_Mesh(): namespace { - void deleteMeshDS(SMESHDS_Mesh* meshDS) +#ifndef WIN32 + void deleteMeshDS(SMESHDS_Mesh* meshDS) { //cout << "deleteMeshDS( " << meshDS << endl; delete meshDS; } +#else + static void* deleteMeshDS(void* meshDS) + { + //cout << "deleteMeshDS( " << meshDS << endl; + SMESHDS_Mesh* m = (SMESHDS_Mesh*)meshDS; + if(m) { + delete m; + } + return 0; + } +#endif } //============================================================================= @@ -191,9 +206,15 @@ SMESH_Mesh::~SMESH_Mesh() _myDocument->RemoveMesh( _id ); _myDocument = 0; - if ( _myMeshDS ) - // delete _myMeshDS, in a thread in order not to block closing a study with large meshes + if ( _myMeshDS ) { + // delete _myMeshDS, in a thread in order not to block closing a study with large meshes +#ifndef WIN32 boost::thread aThread(boost::bind( & deleteMeshDS, _myMeshDS )); +#else + pthread_t thread; + int result=pthread_create(&thread, NULL, deleteMeshDS, (void*)_myMeshDS); +#endif + } } //================================================================================