X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH%2FSMESH_Mesh.cxx;h=242c7cb3ae5c5c6bec8923c88b63375bbd536eee;hb=ae475d83daa783338e06f1023f0a700c1c27955f;hp=4c1383356d4adc41e1f8e0f56bd34e251d8fa287;hpb=7b33bc39fd54725e6444d8814129c6fffd826617;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_Mesh.cxx b/src/SMESH/SMESH_Mesh.cxx index 4c1383356..242c7cb3a 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,16 +142,28 @@ SMESH_Mesh::SMESH_Mesh(): namespace { +#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 ) + 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 + } } //================================================================================