diff options
author | andreykproductengine <andreykproductengine@lindenlab.com> | 2019-09-04 19:20:52 +0300 |
---|---|---|
committer | andreykproductengine <andreykproductengine@lindenlab.com> | 2019-09-04 19:20:52 +0300 |
commit | 27d391b2bb068ee38ba36e7b3169058196da9420 (patch) | |
tree | 2c9a7e7ec92b57e3c2c2905f3ae3f09004452a99 | |
parent | a8bc48b334428ab0d809c93d3d70b8a84df6723e (diff) |
SL-11868 Fix cache init after purge
-rw-r--r-- | indra/newview/llappviewer.cpp | 5 | ||||
-rw-r--r-- | indra/newview/llvocache.cpp | 3 | ||||
-rw-r--r-- | indra/newview/llvocache.h | 6 |
3 files changed, 8 insertions, 6 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 1874743644..f414ec0d09 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -4123,7 +4123,7 @@ bool LLAppViewer::initCache() mPurgeCache = false; BOOL read_only = mSecondInstance ? TRUE : FALSE; LLAppViewer::getTextureCache()->setReadOnly(read_only) ; - LLVOCache::initParamSingleton(LL_PATH_CACHE, gSavedSettings.getU32("CacheNumberOfRegionsForObjects"), getObjectCacheVersion(), read_only); + LLVOCache::initParamSingleton(read_only); bool texture_cache_mismatch = false; if (gSavedSettings.getS32("LocalCacheVersion") != LLAppViewer::getTextureCacheVersion()) @@ -4195,6 +4195,9 @@ bool LLAppViewer::initCache() S64 extra = LLAppViewer::getTextureCache()->initCache(LL_PATH_CACHE, texture_cache_size, texture_cache_mismatch); texture_cache_size -= extra; + + LLVOCache::getInstance()->initCache(LL_PATH_CACHE, gSavedSettings.getU32("CacheNumberOfRegionsForObjects"), getObjectCacheVersion()); + LLSplashScreen::update(LLTrans::getString("StartupInitializingVFS")); // Init the VFS diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index 0e6511f6b5..07660ca6ac 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -1045,7 +1045,7 @@ const char* object_cache_dirname = "objectcache"; const char* header_filename = "object.cache"; -LLVOCache::LLVOCache(ELLPath location, U32 size, U32 cache_version, bool read_only) : +LLVOCache::LLVOCache(bool read_only) : mInitialized(false), mReadOnly(read_only), mNumEntries(0), @@ -1053,7 +1053,6 @@ LLVOCache::LLVOCache(ELLPath location, U32 size, U32 cache_version, bool read_on { mEnabled = gSavedSettings.getBOOL("ObjectCacheEnabled"); mLocalAPRFilePoolp = new LLVolatileAPRPool() ; - initCache(location, size, cache_version); } LLVOCache::~LLVOCache() diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h index 41b5246480..6c95541c11 100644 --- a/indra/newview/llvocache.h +++ b/indra/newview/llvocache.h @@ -223,7 +223,7 @@ private: // class LLVOCache : public LLParamSingleton<LLVOCache> { - LLSINGLETON(LLVOCache, ELLPath location, U32 size, U32 cache_version, bool read_only); + LLSINGLETON(LLVOCache, bool read_only); ~LLVOCache() ; private: @@ -259,6 +259,8 @@ private: typedef std::map<U64, HeaderEntryInfo*> handle_entry_map_t; public: + // We need this init to be separate from constructor, since we might construct cache, purge it, then init. + void initCache(ELLPath location, U32 size, U32 cache_version); void removeCache(ELLPath location, bool started = false) ; void readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::vocache_entry_map_t& cache_entry_map) ; @@ -269,8 +271,6 @@ public: U32 getCacheEntriesMax() { return mCacheSize; } private: - void initCache(ELLPath location, U32 size, U32 cache_version); - void setDirNames(ELLPath location); // determine the cache filename for the region from the region handle void getObjectCacheFilename(U64 handle, std::string& filename); |