From 746ff8f44b6d678843751540f975958b5692c517 Mon Sep 17 00:00:00 2001
From: Ansariel <ansariel.hiller@phoenixviewer.com>
Date: Thu, 13 Aug 2020 20:33:26 +0200
Subject: [PATCH] Attempt to fix the VAAssetStorage pool creation issue

---
 indra/llmessage/llcoproceduremanager.cpp | 11 +++++++++++
 indra/llmessage/llcoproceduremanager.h   |  2 ++
 indra/newview/llviewerassetstorage.cpp   |  4 ++++
 3 files changed, 17 insertions(+)

diff --git a/indra/llmessage/llcoproceduremanager.cpp b/indra/llmessage/llcoproceduremanager.cpp
index 42c19e3b1c8..cb989dda1e7 100644
--- a/indra/llmessage/llcoproceduremanager.cpp
+++ b/indra/llmessage/llcoproceduremanager.cpp
@@ -272,6 +272,17 @@ void LLCoprocedureManager::close(const std::string &pool)
     }
 }
 
+// <FS:Ansariel> Explicitly create the VAAssetStorage pool
+void LLCoprocedureManager::createPool(const std::string& poolName)
+{
+    poolMap_t::iterator it = mPoolMap.find(poolName);
+    if (it == mPoolMap.end())
+    {
+        initializePool(poolName);
+    }
+}
+// </FS:Ansariel> Explicitly create the VAAssetStorage pool
+
 //=========================================================================
 LLCoprocedurePool::LLCoprocedurePool(const std::string &poolName, size_t size):
     mPoolName(poolName),
diff --git a/indra/llmessage/llcoproceduremanager.h b/indra/llmessage/llcoproceduremanager.h
index de858fb29dc..2c620efe518 100644
--- a/indra/llmessage/llcoproceduremanager.h
+++ b/indra/llmessage/llcoproceduremanager.h
@@ -79,6 +79,8 @@ class LLCoprocedureManager final : public LLSingleton < LLCoprocedureManager >
 
     void close();
     void close(const std::string &pool);
+
+    void createPool(const std::string& poolName); // <FS:Ansariel> Explicitly create the VAAssetStorage pool
     
 private:
 
diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp
index c6a2783a3eb..d40c9c9ed8b 100644
--- a/indra/newview/llviewerassetstorage.cpp
+++ b/indra/newview/llviewerassetstorage.cpp
@@ -114,6 +114,8 @@ LLViewerAssetStorage::LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *
       mCountSucceeded(0),
       mTotalBytesFetched(0)
 {
+    // <FS:Ansariel> Explicitly create the VAAssetStorage pool
+    LLCoprocedureManager::instance().createPool(VIEWER_ASSET_STORAGE_CORO_POOL);
 }
 
 
@@ -127,6 +129,8 @@ LLViewerAssetStorage::LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *
       mCountSucceeded(0),
       mTotalBytesFetched(0)
 {
+    // <FS:Ansariel> Explicitly create the VAAssetStorage pool
+    LLCoprocedureManager::instance().createPool(VIEWER_ASSET_STORAGE_CORO_POOL);
 }
 
 LLViewerAssetStorage::~LLViewerAssetStorage()
-- 
GitLab