diff --git a/include/Algo/Selection/collector.h b/include/Algo/Selection/collector.h index 842e382eb2053787755ec224a44498ebc1681117..3f10102353c2914d9ddd6884e17667134fac0f9f 100644 --- a/include/Algo/Selection/collector.h +++ b/include/Algo/Selection/collector.h @@ -53,6 +53,7 @@ protected: typedef typename PFP::REAL REAL; typename PFP::MAP& map; + unsigned int m_thread; Dart centerDart; @@ -62,7 +63,7 @@ protected: std::vector border; public: - Collector(typename PFP::MAP& m); + Collector(typename PFP::MAP& m, unsigned int thread =0); inline void init(Dart d) { @@ -122,9 +123,8 @@ template class Collector_OneRing : public Collector { public: - Collector_OneRing(typename PFP::MAP& m) : - Collector(m) - {} + Collector_OneRing(typename PFP::MAP& m, unsigned int thread=0): + Collector(m, thread) {} void collectAll(Dart d); void collectBorder(Dart d); }; @@ -145,11 +145,10 @@ protected: const VertexAttribute& position; typename PFP::REAL radius; typename PFP::REAL area; - unsigned int m_thread; public: Collector_WithinSphere(typename PFP::MAP& m, const VertexAttribute& p, typename PFP::REAL r = 0, unsigned int thread=0) : - Collector(m), + Collector(m, thread), position(p), radius(r), area(0), @@ -188,8 +187,9 @@ public: typename PFP::MAP& m, const VertexAttribute& p, const VertexAttribute& n, - typename PFP::REAL a - ) : Collector(m), position(p), normal(n), angleThreshold(a) + typename PFP::REAL a, + unsigned int thread=0 + ) : Collector(m,thread), position(p), normal(n), angleThreshold(a) {} inline void setAngleThreshold(typename PFP::REAL a) { angleThreshold = a; } inline typename PFP::REAL getAngleThreshold() const { return angleThreshold; } diff --git a/include/Algo/Selection/collector.hpp b/include/Algo/Selection/collector.hpp index c608a44461466281fd4603870c0679e4b9a69ee3..7df53f576c5cb1880d761385ec7a635d1d0784c8 100644 --- a/include/Algo/Selection/collector.hpp +++ b/include/Algo/Selection/collector.hpp @@ -39,7 +39,7 @@ namespace Selection *********************************************************/ template -Collector::Collector(typename PFP::MAP& m) : map(m) +Collector::Collector(typename PFP::MAP& m, unsigned int thread) : map(m), m_thread(thread) {} template @@ -295,9 +295,9 @@ void Collector_NormalAngle::collectAll(Dart d) this->insideFaces.reserve(32); this->border.reserve(32); - CellMarkerStore vm(this->map); // mark the collected inside-vertices - CellMarkerStore em(this->map); // mark the collected inside-edges + border-edges - CellMarkerStore fm(this->map); // mark the collected inside-faces + border-faces + CellMarkerStore vm(this->map, m_thread); // mark the collected inside-vertices + CellMarkerStore em(this->map, m_thread); // mark the collected inside-edges + border-edges + CellMarkerStore fm(this->map, m_thread); // mark the collected inside-faces + border-faces this->insideVertices.push_back(this->centerDart); vm.mark(this->centerDart); @@ -360,8 +360,8 @@ void Collector_NormalAngle::collectBorder(Dart d) this->border.reserve(128); this->insideVertices.reserve(128); - CellMarkerStore vm(this->map); // mark the collected inside-vertices - CellMarkerStore em(this->map); // mark the collected inside-edges + border-edges + CellMarkerStore vm(this->map, m_thread); // mark the collected inside-vertices + CellMarkerStore em(this->map, m_thread); // mark the collected inside-edges + border-edges this->insideVertices.push_back(this->centerDart); vm.mark(this->centerDart);