diff options
author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2017-04-28 16:10:24 -0400 |
---|---|---|
committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2017-04-28 16:10:24 -0400 |
commit | 9dfb5614e640b3350d89500b7d7486e2065ed7e2 (patch) | |
tree | 26aa40c462e9705fa01c4248e90a02f0c01a6d34 | |
parent | b7b8d6e1aedeac1dfdfcc9200024bbcc8e2dacae (diff) |
MAINT-7343 - moved asset downloads to use coprocedure pools, which should reduce the size of potential memory spikes
-rw-r--r-- | indra/newview/app_settings/settings.xml | 9 | ||||
-rw-r--r-- | indra/newview/llviewerassetstorage.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llviewerassetstorage.h | 5 |
3 files changed, 17 insertions, 3 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d2d629339d..f2ae685432 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -14723,6 +14723,15 @@ <key>Value</key> <real>1</real> </map> + <key>PoolSizeAssetStorage</key> + <map> + <key>Comment</key> + <string>Coroutine Pool size for AssetStorage requests</string> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <real>12</real> + </map> <!-- Settings below are for back compatibility only. They are not used in current viewer anymore. But they can't be removed to avoid diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp index 9918d226c2..71507b5608 100644 --- a/indra/newview/llviewerassetstorage.cpp +++ b/indra/newview/llviewerassetstorage.cpp @@ -40,6 +40,7 @@ #include "lltransfertargetvfile.h" #include "llviewerassetstats.h" #include "llcoros.h" +#include "llcoproceduremanager.h" #include "lleventcoro.h" #include "llsdutil.h" #include "llworld.h" @@ -398,8 +399,8 @@ void LLViewerAssetStorage::queueRequestHttp( bool is_temp = false; LLViewerAssetStatsFF::record_enqueue(atype, with_http, is_temp); - LLCoros::instance().launch("LLViewerAssetStorage::assetRequestCoro", - boost::bind(&LLViewerAssetStorage::assetRequestCoro, this, req, uuid, atype, callback, user_data)); + LLCoprocedureManager::instance().enqueueCoprocedure("AssetStorage","LLViewerAssetStorage::assetRequestCoro", + boost::bind(&LLViewerAssetStorage::assetRequestCoro, this, _1, req, uuid, atype, callback, user_data)); } } @@ -433,6 +434,7 @@ struct LLScopedIncrement }; void LLViewerAssetStorage::assetRequestCoro( + LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &defaultHttpAdapter, // not used LLViewerAssetRequest *req, const LLUUID& uuid, LLAssetType::EType atype, diff --git a/indra/newview/llviewerassetstorage.h b/indra/newview/llviewerassetstorage.h index 8a58241378..a32b3bb700 100644 --- a/indra/newview/llviewerassetstorage.h +++ b/indra/newview/llviewerassetstorage.h @@ -28,6 +28,7 @@ #define LLVIEWERASSETSTORAGE_H #include "llassetstorage.h" +#include "llcorehttputil.h" class LLVFile; @@ -82,7 +83,9 @@ protected: void capsRecvForRegion(const LLUUID& region_id, std::string pumpname); - void assetRequestCoro(LLViewerAssetRequest *req, + void assetRequestCoro( + LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &defaultHttpAdapter, + LLViewerAssetRequest *req, const LLUUID& uuid, LLAssetType::EType atype, void (*callback) (LLVFS *vfs, const LLUUID&, LLAssetType::EType, void *, S32, LLExtStat), |