Salome HOME
projects
/
modules
/
smesh.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
#19765 EDF 21730 - long time to load med file file with huge amount of groups
[modules/smesh.git]
/
src
/
SMESHDS
/
SMESHDS_GroupOnFilter.cxx
diff --git
a/src/SMESHDS/SMESHDS_GroupOnFilter.cxx
b/src/SMESHDS/SMESHDS_GroupOnFilter.cxx
index cb078ea86f7807cdf09f000f1f40f8b2b23d976e..3d8f98fc993ffbc6e96cda6c1b2e855a8926c8c8 100644
(file)
--- a/
src/SMESHDS/SMESHDS_GroupOnFilter.cxx
+++ b/
src/SMESHDS/SMESHDS_GroupOnFilter.cxx
@@
-1,4
+1,4
@@
-// Copyright (C) 2007-20
19
CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-20
20
CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@
-147,6
+147,7
@@
namespace // Iterator
size_t myNbToFind, myNbFound, myTotalNb;
vector< const SMDS_MeshElement*>& myFoundElems;
bool & myFoundElemsOK;
size_t myNbToFind, myNbFound, myTotalNb;
vector< const SMDS_MeshElement*>& myFoundElems;
bool & myFoundElemsOK;
+ bool myFoundElemsChecked;
TIterator( const SMESH_PredicatePtr& filter,
SMDS_ElemIteratorPtr& elems,
TIterator( const SMESH_PredicatePtr& filter,
SMDS_ElemIteratorPtr& elems,
@@
-161,14
+162,15
@@
namespace // Iterator
myNbFound( 0 ),
myTotalNb( totalNb ),
myFoundElems( foundElems ),
myNbFound( 0 ),
myTotalNb( totalNb ),
myFoundElems( foundElems ),
- myFoundElemsOK( foundElemsOK )
+ myFoundElemsOK( foundElemsOK ),
+ myFoundElemsChecked( false )
{
myFoundElemsOK = false;
next();
}
~TIterator()
{
{
myFoundElemsOK = false;
next();
}
~TIterator()
{
- if ( !myFoundElemsOK )
+ if ( !myFoundElems
Checked && !myFoundElems
OK )
clearVector( myFoundElems );
}
virtual bool more()
clearVector( myFoundElems );
}
virtual bool more()
@@
-225,6
+227,8
@@
namespace // Iterator
}
if ( !myFoundElemsOK )
clearVector( myFoundElems );
}
if ( !myFoundElemsOK )
clearVector( myFoundElems );
+
+ myFoundElemsChecked = true; // in destructor: not to clearVector() which may already die
}
};
}
};
@@
-391,6
+395,14
@@
void SMESHDS_GroupOnFilter::update() const
//================================================================================
#ifdef WITH_TBB
//================================================================================
#ifdef WITH_TBB
+#ifdef WIN32
+// See https://docs.microsoft.com/en-gb/cpp/porting/modifying-winver-and-win32-winnt?view=vs-2019
+// Windows 10 = 0x0A00
+#define WINVER 0x0A00
+#define _WIN32_WINNT 0x0A00
+
+#endif
+
#include <tbb/parallel_for.h>
#include "tbb/enumerable_thread_specific.h"
#include <tbb/parallel_for.h>
#include "tbb/enumerable_thread_specific.h"