From da8536ad43924771cb72752745b00ca88366737b Mon Sep 17 00:00:00 2001 From: Pawel Date: Thu, 6 Jun 2013 21:58:39 +0200 Subject: [PATCH] 0024018: Voxel_FastConverter::Convert - avoiding unnecessary iterations when using multiple threads After processing 'end_thread_triangle' the method exits instead of just continuing the iteration. Formatting adjusted. --- src/Voxel/Voxel_FastConverter.cxx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Voxel/Voxel_FastConverter.cxx b/src/Voxel/Voxel_FastConverter.cxx index 2cdc21a471..6d5b35a728 100755 --- a/src/Voxel/Voxel_FastConverter.cxx +++ b/src/Voxel/Voxel_FastConverter.cxx @@ -217,8 +217,18 @@ Standard_Boolean Voxel_FastConverter::Convert(Standard_Integer& progress, for (; itriangle <= nb_triangles; itriangle++) { ithread_triangle++; - if (ithread_triangle < start_thread_triangle || ithread_triangle > end_thread_triangle) - continue; + if (ithread_triangle < start_thread_triangle ) + continue; + if (ithread_triangle > end_thread_triangle) + { + if (ithread == 1) + progress = 100; +#ifdef CONV_DUMP + if (ithread == 1) + printf("Progress = %d \r", progress); +#endif + return Standard_True; + } const Poly_Triangle& t = triangles.Value(itriangle); t.Get(n1, n2, n3); @@ -227,9 +237,9 @@ Standard_Boolean Voxel_FastConverter::Convert(Standard_Integer& progress, gp_Pnt p3 = nodes.Value(n3); if (transform) { - p1.Transform(trsf); - p2.Transform(trsf); - p3.Transform(trsf); + p1.Transform(trsf); + p2.Transform(trsf); + p3.Transform(trsf); } // Get boundary box of the triangle -- 2.39.5