SL-18721 Viewer shutdown order changes
Same thing as commit cf692c40b0
which was removed due to shutdown freezes.
Error thread is no longer there so doesn't cause any race sonditions,
was not able to repro any issues so will ask QA to test shutdown
meow-7.2.2
parent
858cde02f7
commit
edf0874e06
|
|
@ -21,11 +21,12 @@
|
|||
#include "llevents.h"
|
||||
#include "stringize.h"
|
||||
|
||||
LL::ThreadPool::ThreadPool(const std::string& name, size_t threads, size_t capacity):
|
||||
LL::ThreadPool::ThreadPool(const std::string& name, size_t threads, size_t capacity, bool auto_shutdown):
|
||||
super(name),
|
||||
mQueue(name, capacity),
|
||||
mName("ThreadPool:" + name),
|
||||
mThreadCount(threads)
|
||||
mThreadCount(threads),
|
||||
mAutomaticShutdown(auto_shutdown)
|
||||
{}
|
||||
|
||||
void LL::ThreadPool::start()
|
||||
|
|
@ -39,6 +40,13 @@ void LL::ThreadPool::start()
|
|||
run(tname);
|
||||
});
|
||||
}
|
||||
|
||||
// Some threads might need to run longer than LLEventPumps
|
||||
if (!mAutomaticShutdown)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Listen on "LLApp", and when the app is shutting down, close the queue
|
||||
// and join the workers.
|
||||
LLEventPumps::instance().obtain("LLApp").listen(
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ namespace LL
|
|||
* Pass ThreadPool a string name. This can be used to look up the
|
||||
* relevant WorkQueue.
|
||||
*/
|
||||
ThreadPool(const std::string& name, size_t threads=1, size_t capacity=1024);
|
||||
ThreadPool(const std::string& name, size_t threads=1, size_t capacity=1024, bool auto_shutdown = true);
|
||||
virtual ~ThreadPool();
|
||||
|
||||
/**
|
||||
|
|
@ -66,6 +66,7 @@ namespace LL
|
|||
std::string mName;
|
||||
size_t mThreadCount;
|
||||
std::vector<std::pair<std::string, std::thread>> mThreads;
|
||||
bool mAutomaticShutdown;
|
||||
};
|
||||
|
||||
} // namespace LL
|
||||
|
|
|
|||
|
|
@ -828,6 +828,7 @@ void LLWindowWin32::close()
|
|||
// Is window is already closed?
|
||||
if (!mWindowHandle)
|
||||
{
|
||||
mWindowThread->close();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -4590,7 +4591,7 @@ std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList()
|
|||
#endif // LL_WINDOWS
|
||||
|
||||
inline LLWindowWin32::LLWindowWin32Thread::LLWindowWin32Thread()
|
||||
: ThreadPool("Window Thread", 1, MAX_QUEUE_SIZE)
|
||||
: ThreadPool("Window Thread", 1, MAX_QUEUE_SIZE, false)
|
||||
{
|
||||
ThreadPool::start();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue