summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2017-04-28 16:10:24 -0400
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2017-04-28 16:10:24 -0400
commit9dfb5614e640b3350d89500b7d7486e2065ed7e2 (patch)
tree26aa40c462e9705fa01c4248e90a02f0c01a6d34
parentb7b8d6e1aedeac1dfdfcc9200024bbcc8e2dacae (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.xml9
-rw-r--r--indra/newview/llviewerassetstorage.cpp6
-rw-r--r--indra/newview/llviewerassetstorage.h5
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),