summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorAlexander Gavriliuk <alexandrgproductengine@lindenlab.com>2023-03-20 10:20:06 +0100
committerGuru <alexandrgproductengine@lindenlab.com>2023-03-20 21:08:42 +0100
commitcf692c40b0b9f8d0d04cd10a02a84e3f697a2e99 (patch)
treec1ec822dd3bc87a5498f6e17cf92e7bd49f94c84 /indra
parentc23353cfc3f0a8c580c99332e47c288758a023c8 (diff)
SL-18721: Faster viewer shutdown time since performance improvements can lead to perceived inventory loss due to cache corruption
Diffstat (limited to 'indra')
-rw-r--r--indra/llcommon/threadpool.cpp5
-rw-r--r--indra/llcommon/threadpool.h4
-rw-r--r--indra/llwindow/llwindowwin32.cpp3
3 files changed, 12 insertions, 0 deletions
diff --git a/indra/llcommon/threadpool.cpp b/indra/llcommon/threadpool.cpp
index d5adf11264..4a7ead2110 100644
--- a/indra/llcommon/threadpool.cpp
+++ b/indra/llcommon/threadpool.cpp
@@ -39,6 +39,11 @@ void LL::ThreadPool::start()
run(tname);
});
}
+
+ // Special workflow for LLWindowWin32Thread - it's close() should be called explicitly
+ if (mExplicitShutdown)
+ return;
+
// Listen on "LLApp", and when the app is shutting down, close the queue
// and join the workers.
LLEventPumps::instance().obtain("LLApp").listen(
diff --git a/indra/llcommon/threadpool.h b/indra/llcommon/threadpool.h
index f8eec3b457..0a5f14529b 100644
--- a/indra/llcommon/threadpool.h
+++ b/indra/llcommon/threadpool.h
@@ -59,6 +59,10 @@ namespace LL
*/
virtual void run();
+ protected:
+ // LLWindowWin32Thread should set this flag to true
+ bool mExplicitShutdown { false };
+
private:
void run(const std::string& name);
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 41f3042ace..afe26ec5a4 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -4581,6 +4581,9 @@ std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList()
inline LLWindowWin32::LLWindowWin32Thread::LLWindowWin32Thread()
: ThreadPool("Window Thread", 1, MAX_QUEUE_SIZE)
{
+ // Set this flag to true to avoid of implicit call of close() from start()
+ mExplicitShutdown = true;
+
ThreadPool::start();
}