summaryrefslogtreecommitdiff
path: root/indra/llcommon/threadpool.cpp
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2021-11-23 20:39:32 -0500
committerNat Goodspeed <nat@lindenlab.com>2021-11-23 20:39:32 -0500
commit2b96f89c2a374d72c0a8bc28a7b06ad4db7eae6e (patch)
tree00a275eefc21861b5ec70c50fb75235411f1ffa6 /indra/llcommon/threadpool.cpp
parent6d36038e4098ebe7334284fc9b3fb76bc116c106 (diff)
SL-16400: Add ThreadPool::start() method, and call it.
It's sometimes important to finish other initialization before launching the threads in the ThreadPool, so make that an explicit step. In particular, we were launching the LLImageGL texture thread before initializing the GL context, resulting in all gray textures.
Diffstat (limited to 'indra/llcommon/threadpool.cpp')
-rw-r--r--indra/llcommon/threadpool.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/indra/llcommon/threadpool.cpp b/indra/llcommon/threadpool.cpp
index 06e0dc5bfc..ba914035e2 100644
--- a/indra/llcommon/threadpool.cpp
+++ b/indra/llcommon/threadpool.cpp
@@ -23,11 +23,15 @@
LL::ThreadPool::ThreadPool(const std::string& name, size_t threads, size_t capacity):
mQueue(name, capacity),
- mName("ThreadPool:" + name)
+ mName("ThreadPool:" + name),
+ mThreadCount(threads)
+{}
+
+void LL::ThreadPool::start()
{
- for (size_t i = 0; i < threads; ++i)
+ for (size_t i = 0; i < mThreadCount; ++i)
{
- std::string tname{ STRINGIZE(mName << ':' << (i+1) << '/' << threads) };
+ std::string tname{ stringize(mName, ':', (i+1), '/', mThreadCount) };
mThreads.emplace_back(tname, [this, tname]()
{
LL_PROFILER_SET_THREAD_NAME(tname.c_str());