Mercurial > hg > orthanc-stone
comparison Framework/Toolbox/ParallelSlicesCursor.cpp @ 53:c2dc924f1a63 wasm
removing threading out of the framework
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 27 Apr 2017 16:57:49 +0200 |
parents | 28956ed68280 |
children | 53025eecbc95 |
comparison
equal
deleted
inserted
replaced
52:37e504582af6 | 53:c2dc924f1a63 |
---|---|
38 } | 38 } |
39 | 39 |
40 | 40 |
41 size_t ParallelSlicesCursor::GetSliceCount() | 41 size_t ParallelSlicesCursor::GetSliceCount() |
42 { | 42 { |
43 boost::mutex::scoped_lock lock(mutex_); | |
44 | |
45 if (slices_.get() == NULL) | 43 if (slices_.get() == NULL) |
46 { | 44 { |
47 return 0; | 45 return 0; |
48 } | 46 } |
49 else | 47 else |
53 } | 51 } |
54 | 52 |
55 | 53 |
56 SliceGeometry ParallelSlicesCursor::GetSlice(size_t slice) | 54 SliceGeometry ParallelSlicesCursor::GetSlice(size_t slice) |
57 { | 55 { |
58 boost::mutex::scoped_lock lock(mutex_); | |
59 | |
60 if (slices_.get() == NULL) | 56 if (slices_.get() == NULL) |
61 { | 57 { |
62 return SliceGeometry(); | 58 return SliceGeometry(); |
63 } | 59 } |
64 else | 60 else |
68 } | 64 } |
69 | 65 |
70 | 66 |
71 void ParallelSlicesCursor::SetGeometry(const ParallelSlices& slices) | 67 void ParallelSlicesCursor::SetGeometry(const ParallelSlices& slices) |
72 { | 68 { |
73 boost::mutex::scoped_lock lock(mutex_); | |
74 | |
75 slices_.reset(new ParallelSlices(slices)); | 69 slices_.reset(new ParallelSlices(slices)); |
76 | 70 |
77 currentSlice_ = GetDefaultSlice(); | 71 currentSlice_ = GetDefaultSlice(); |
78 } | 72 } |
79 | 73 |
80 | 74 |
81 SliceGeometry ParallelSlicesCursor::GetCurrentSlice() | 75 SliceGeometry ParallelSlicesCursor::GetCurrentSlice() |
82 { | 76 { |
83 boost::mutex::scoped_lock lock(mutex_); | |
84 | |
85 if (slices_.get() != NULL && | 77 if (slices_.get() != NULL && |
86 currentSlice_ < slices_->GetSliceCount()) | 78 currentSlice_ < slices_->GetSliceCount()) |
87 { | 79 { |
88 return slices_->GetSlice(currentSlice_); | 80 return slices_->GetSlice(currentSlice_); |
89 } | 81 } |
94 } | 86 } |
95 | 87 |
96 | 88 |
97 bool ParallelSlicesCursor::SetDefaultSlice() | 89 bool ParallelSlicesCursor::SetDefaultSlice() |
98 { | 90 { |
99 boost::mutex::scoped_lock lock(mutex_); | |
100 | |
101 size_t slice = GetDefaultSlice(); | 91 size_t slice = GetDefaultSlice(); |
102 | 92 |
103 if (currentSlice_ != slice) | 93 if (currentSlice_ != slice) |
104 { | 94 { |
105 currentSlice_ = slice; | 95 currentSlice_ = slice; |
113 | 103 |
114 | 104 |
115 bool ParallelSlicesCursor::ApplyOffset(SliceOffsetMode mode, | 105 bool ParallelSlicesCursor::ApplyOffset(SliceOffsetMode mode, |
116 int offset) | 106 int offset) |
117 { | 107 { |
118 boost::mutex::scoped_lock lock(mutex_); | |
119 | |
120 if (slices_.get() == NULL) | 108 if (slices_.get() == NULL) |
121 { | 109 { |
122 return false; | 110 return false; |
123 } | 111 } |
124 | 112 |
213 } | 201 } |
214 | 202 |
215 | 203 |
216 bool ParallelSlicesCursor::LookupSliceContainingPoint(const Vector& p) | 204 bool ParallelSlicesCursor::LookupSliceContainingPoint(const Vector& p) |
217 { | 205 { |
218 boost::mutex::scoped_lock lock(mutex_); | |
219 | |
220 size_t slice; | 206 size_t slice; |
221 double distance; | 207 double distance; |
222 | 208 |
223 if (slices_.get() != NULL && | 209 if (slices_.get() != NULL && |
224 slices_->ComputeClosestSlice(slice, distance, p)) | 210 slices_->ComputeClosestSlice(slice, distance, p)) |