diff options
| -rw-r--r-- | indra/llcommon/threadpool.cpp | 5 | ||||
| -rw-r--r-- | indra/llcommon/threadpool.h | 4 | ||||
| -rw-r--r-- | indra/llwindow/llwindowwin32.cpp | 3 | 
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();  }  | 
