move reading of the sim features to LLViewerRegion for consistency, a couple of minor cleanups
parent
5f397fa583
commit
8ae792b38a
|
|
@ -50,9 +50,7 @@
|
|||
#define MATERIALS_CAP_MATERIAL_FIELD "Material"
|
||||
#define MATERIALS_CAP_OBJECT_ID_FIELD "ID"
|
||||
#define MATERIALS_CAP_MATERIAL_ID_FIELD "MaterialID"
|
||||
#define SIM_FEATURE_MAX_MATERIALS_PER_TRANSACTION "MaxMaterialsPerTransaction"
|
||||
|
||||
#define MATERIALS_DEFAULT_MAX_ENTRIES 50
|
||||
#define MATERIALS_GET_TIMEOUT (60.f * 20)
|
||||
#define MATERIALS_POST_TIMEOUT (60.f * 5)
|
||||
#define MATERIALS_PUT_THROTTLE_SECS 1.f
|
||||
|
|
@ -592,7 +590,7 @@ void LLMaterialMgr::processGetQueue()
|
|||
LLSD materialsData = LLSD::emptyArray();
|
||||
|
||||
material_queue_t& materials = itRegionQueue->second;
|
||||
U32 max_entries = getMaxEntries(regionp);
|
||||
U32 max_entries = regionp->getMaxMaterialsPerTransaction();
|
||||
material_queue_t::iterator loopMaterial = materials.begin();
|
||||
while ( (materials.end() != loopMaterial) && (materialsData.size() < max_entries) )
|
||||
{
|
||||
|
|
@ -698,7 +696,7 @@ void LLMaterialMgr::processPutQueue()
|
|||
LLSD& facesData = requests[regionp];
|
||||
|
||||
facematerial_map_t& face_map = itQueue->second;
|
||||
U32 max_entries = getMaxEntries(regionp);
|
||||
U32 max_entries = regionp->getMaxMaterialsPerTransaction();
|
||||
facematerial_map_t::iterator itFace = face_map.begin();
|
||||
while ( (face_map.end() != itFace) && (facesData.size() < max_entries) )
|
||||
{
|
||||
|
|
@ -785,20 +783,3 @@ void LLMaterialMgr::onRegionRemoved(LLViewerRegion* regionp)
|
|||
// Put doesn't need clearing: objects that can't be found will clean up in processPutQueue()
|
||||
}
|
||||
|
||||
U32 LLMaterialMgr::getMaxEntries(const LLViewerRegion* regionp)
|
||||
{
|
||||
LLSD sim_features;
|
||||
regionp->getSimulatorFeatures(sim_features);
|
||||
U32 max_entries;
|
||||
if ( sim_features.has( SIM_FEATURE_MAX_MATERIALS_PER_TRANSACTION )
|
||||
&& sim_features[ SIM_FEATURE_MAX_MATERIALS_PER_TRANSACTION ].isInteger())
|
||||
{
|
||||
max_entries = sim_features[ SIM_FEATURE_MAX_MATERIALS_PER_TRANSACTION ].asInteger();
|
||||
}
|
||||
else
|
||||
{
|
||||
max_entries = MATERIALS_DEFAULT_MAX_ENTRIES;
|
||||
}
|
||||
return max_entries;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -124,11 +124,6 @@ protected:
|
|||
put_queue_t mPutQueue;
|
||||
|
||||
material_map_t mMaterials;
|
||||
|
||||
U32 getMaxEntries(const LLViewerRegion* regionp);
|
||||
|
||||
LLFrameTimer mCapThrottleTimer;
|
||||
F32 getThrottleIntervalSecs(const LLUUID& region_id);
|
||||
};
|
||||
|
||||
#endif // LL_LLMATERIALMGR_H
|
||||
|
|
|
|||
|
|
@ -1976,3 +1976,15 @@ void LLViewerRegion::resetMaterialsCapThrottle()
|
|||
mMaterialsCapThrottleTimer.resetWithExpiry( 1.0f / requests_per_sec );
|
||||
}
|
||||
|
||||
U32 LLViewerRegion::getMaxMaterialsPerTransaction() const
|
||||
{
|
||||
U32 max_entries = 50; // original hard coded default
|
||||
if ( mSimulatorFeatures.has( "MaxMaterialsPerTransaction" )
|
||||
&& mSimulatorFeatures[ "MaxMaterialsPerTransaction" ].isInteger())
|
||||
{
|
||||
max_entries = mSimulatorFeatures[ "MaxMaterialsPerTransaction" ].asInteger();
|
||||
}
|
||||
return max_entries;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -348,6 +348,7 @@ public:
|
|||
bool materialsCapThrottled() const { return !mMaterialsCapThrottleTimer.hasExpired(); }
|
||||
void resetMaterialsCapThrottle();
|
||||
|
||||
U32 getMaxMaterialsPerTransaction() const;
|
||||
public:
|
||||
struct CompareDistance
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue