From d5d389f062a042dfe65636f9ece6bc69bbd95065 Mon Sep 17 00:00:00 2001
From: Kyle Ambroff <ambroff@lindenlab.com>
Date: Thu, 4 Nov 2010 12:37:02 -0700
Subject: ER-281: Object cache limit is too low in the viewer

* Bump CacheNumberOfRegionsForObjects up to 20k in the default settings.
* Make LLVOCache *actually* use this setting, with no upper bound.

Reviewed with Kelly.
---
 indra/newview/app_settings/settings.xml |  4 ++--
 indra/newview/llvocache.cpp             | 13 ++++++-------
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 33f5482e50..b46acfe83e 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1150,13 +1150,13 @@
     <key>CacheNumberOfRegionsForObjects</key>
     <map>
       <key>Comment</key>
-      <string>Controls number of regions to be cached for objects, ranges from 16 to 128.</string>
+      <string>Controls number of regions to be cached for objects.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
       <string>U32</string>
       <key>Value</key>
-      <integer>128</integer>
+      <integer>20000</integer>
     </map>
     <key>CacheSize</key>
     <map>
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index 8bdb8e069e..34e9babe2c 100644
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -223,7 +223,6 @@ BOOL LLVOCacheEntry::writeToFile(LLAPRFile* apr_file) const
 // Format string used to construct filename for the object cache
 static const char OBJECT_CACHE_FILENAME[] = "objects_%d_%d.slc";
 
-const U32 MAX_NUM_OBJECT_ENTRIES = 128 ;
 const U32 NUM_ENTRIES_TO_PURGE = 16 ;
 const char* object_cache_dirname = "objectcache";
 const char* header_filename = "object.cache";
@@ -291,9 +290,9 @@ void LLVOCache::initCache(ELLPath location, U32 size, U32 cache_version)
 	if (!mReadOnly)
 	{
 		LLFile::mkdir(mObjectCacheDirName);
-	}	
-	mCacheSize = llclamp(size,
-			     MAX_NUM_OBJECT_ENTRIES, NUM_ENTRIES_TO_PURGE);
+	}
+
+	mCacheSize = size;
 
 	mMetaInfo.mVersion = cache_version;
 	readCacheHeader();
@@ -424,7 +423,7 @@ void LLVOCache::readCacheHeader()
 
 		HeaderEntryInfo* entry ;
 		mNumEntries = 0 ;
-		while(mNumEntries < MAX_NUM_OBJECT_ENTRIES)
+		while(mNumEntries < mCacheSize)
 		{
 			entry = new HeaderEntryInfo() ;
 			if(!checkRead(apr_file, entry, sizeof(HeaderEntryInfo)))
@@ -477,10 +476,10 @@ void LLVOCache::writeCacheHeader()
 	}
 
 	mNumEntries = mHeaderEntryQueue.size() ;
-	if(mNumEntries < MAX_NUM_OBJECT_ENTRIES)
+	if(mNumEntries < mCacheSize)
 	{
 		HeaderEntryInfo* entry = new HeaderEntryInfo() ;
-		for(S32 i = mNumEntries ; i < MAX_NUM_OBJECT_ENTRIES ; i++)
+		for(S32 i = mNumEntries ; i < mCacheSize; i++)
 		{
 			//fill the cache with the default entry.
 			if(!checkWrite(apr_file, entry, sizeof(HeaderEntryInfo)))
-- 
cgit v1.2.3