summaryrefslogtreecommitdiff
path: root/cad/PrusaSlicer/files/patch-src_libslic3r_Thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cad/PrusaSlicer/files/patch-src_libslic3r_Thread.cpp')
-rw-r--r--cad/PrusaSlicer/files/patch-src_libslic3r_Thread.cpp71
1 files changed, 35 insertions, 36 deletions
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_Thread.cpp b/cad/PrusaSlicer/files/patch-src_libslic3r_Thread.cpp
index d48272fed2fe..23d0e75df413 100644
--- a/cad/PrusaSlicer/files/patch-src_libslic3r_Thread.cpp
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_Thread.cpp
@@ -2,45 +2,44 @@ Note that this patch may be removed after FreeBSD 11.x EoL
as latest FreeBSD versions have proper
pthread_setname_np/pthread_getname_np support.
---- src/libslic3r/Thread.cpp.orig 2021-01-11 13:01:51 UTC
+--- src/libslic3r/Thread.cpp.orig 2021-07-16 10:14:03 UTC
+++ src/libslic3r/Thread.cpp
-@@ -4,6 +4,7 @@
- #else
- // any posix system
- #include <pthread.h>
-+ #include <pthread_np.h>
- #endif
-
+@@ -9,10 +9,10 @@
#include <atomic>
-@@ -161,26 +162,27 @@ std::optional<std::string> get_current_thread_name()
- // posix
- bool set_thread_name(std::thread &thread, const char *thread_name)
- {
-- pthread_setname_np(thread.native_handle(), thread_name);
-+ pthread_set_name_np(thread.native_handle(), thread_name);
- return true;
- }
+ #include <condition_variable>
+ #include <mutex>
++#include <thread>
++#include <tbb/global_control.h>
+ #include <tbb/parallel_for.h>
+-#include <tbb/tbb_thread.h>
+ #include <tbb/task_arena.h>
+-#include <tbb/task_scheduler_init.h>
- bool set_thread_name(boost::thread &thread, const char *thread_name)
- {
-- pthread_setname_np(thread.native_handle(), thread_name);
-+ pthread_set_name_np(thread.native_handle(), thread_name);
- return true;
- }
+ #include "Thread.hpp"
- bool set_current_thread_name(const char *thread_name)
- {
-- pthread_setname_np(pthread_self(), thread_name);
-+ pthread_set_name_np(pthread_self(), thread_name);
- return true;
- }
+@@ -206,13 +206,13 @@ void name_tbb_thread_pool_threads()
+ nthreads = 1;
+ #endif
- std::optional<std::string> get_current_thread_name()
- {
- char buf[16];
-- return std::string(pthread_getname_np(pthread_self(), buf, 16) == 0 ? buf : "");
-+ pthread_get_name_np(pthread_self(), buf, 16);
-+ return std::string(buf);
- }
+- if (nthreads != nthreads_hw)
+- new tbb::task_scheduler_init(int(nthreads));
++ if (nthreads != nthreads_hw)
++ tbb::global_control(tbb::global_control::max_allowed_parallelism, nthreads);
- #endif
+ std::atomic<size_t> nthreads_running(0);
+ std::condition_variable cv;
+ std::mutex cv_m;
+- auto master_thread_id = tbb::this_tbb_thread::get_id();
++ auto master_thread_id = std::this_thread::get_id();
+ tbb::parallel_for(
+ tbb::blocked_range<size_t>(0, nthreads, 1),
+ [&nthreads_running, nthreads, &master_thread_id, &cv, &cv_m](const tbb::blocked_range<size_t> &range) {
+@@ -226,7 +226,7 @@ void name_tbb_thread_pool_threads()
+ std::unique_lock<std::mutex> lk(cv_m);
+ cv.wait(lk, [&nthreads_running, nthreads]{return nthreads_running == nthreads;});
+ }
+- auto thread_id = tbb::this_tbb_thread::get_id();
++ auto thread_id = std::this_thread::get_id();
+ if (thread_id == master_thread_id) {
+ // The calling thread runs the 0'th task.
+ assert(range.begin() == 0);