diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp
index eaf118b73f..8ab7f5bcea 100644
--- a/indra/llcommon/llapr.cpp
+++ b/indra/llcommon/llapr.cpp
@@ -31,13 +31,7 @@
#include "apr_dso.h"
apr_pool_t *gAPRPoolp = NULL; // Global APR memory pool
-
-// Not thread safe
-
-// LLVolatileAPRPool *LLAPRFile::sAPRFilePoolp = NULL ; //global volatile APR memory pool.
-
-//
-
+LLVolatileAPRPool *LLAPRFile::sAPRFilePoolp = NULL ; //global volatile APR memory pool.
apr_thread_mutex_t *gLogMutexp = NULL;
apr_thread_mutex_t *gCallStacksLogMutexp = NULL;
@@ -51,29 +45,17 @@ void ll_init_apr()
{
// Initialize APR and create the global pool
apr_initialize();
-
- // Make sure the pool gets its own allocator
-
- // apr_pool_create(&gAPRPoolp, NULL);
-
- apr_allocator_t *pAlloc(0);
-
- apr_allocator_create( &pAlloc );
- apr_pool_create_ex( &gAPRPoolp, 0, 0, pAlloc );
- apr_allocator_owner_set( pAlloc, gAPRPoolp );
-
- //
+ apr_pool_create(&gAPRPoolp, NULL);
// Initialize the logging mutex
apr_thread_mutex_create(&gLogMutexp, APR_THREAD_MUTEX_UNNESTED, gAPRPoolp);
apr_thread_mutex_create(&gCallStacksLogMutexp, APR_THREAD_MUTEX_UNNESTED, gAPRPoolp);
}
- //
- // if(!LLAPRFile::sAPRFilePoolp)
- // {
- // LLAPRFile::sAPRFilePoolp = new LLVolatileAPRPool(FALSE) ;
- // }
+ if(!LLAPRFile::sAPRFilePoolp)
+ {
+ LLAPRFile::sAPRFilePoolp = new LLVolatileAPRPool(FALSE) ;
+ }
}
@@ -102,12 +84,11 @@ void ll_cleanup_apr()
apr_pool_destroy(gAPRPoolp);
gAPRPoolp = NULL;
}
- // if (LLAPRFile::sAPRFilePoolp)
- // {
- // delete LLAPRFile::sAPRFilePoolp ;
- // LLAPRFile::sAPRFilePoolp = NULL ;
- // }
-
+ if (LLAPRFile::sAPRFilePoolp)
+ {
+ delete LLAPRFile::sAPRFilePoolp ;
+ LLAPRFile::sAPRFilePoolp = NULL ;
+ }
apr_terminate();
}
@@ -136,20 +117,8 @@ void LLAPRPool::createAPRPool()
return ;
}
- // Use on allocator for each pool
-
- // mStatus = apr_pool_create(&mPool, mParent);
- // ll_apr_warn_status(mStatus) ;
-
- apr_allocator_t *pAlloc(0);
-
- mStatus = apr_allocator_create( &pAlloc );
+ mStatus = apr_pool_create(&mPool, mParent);
ll_apr_warn_status(mStatus) ;
- mStatus = apr_pool_create_ex( &mPool, mParent, 0, pAlloc );
- ll_apr_warn_status(mStatus) ;
- apr_allocator_owner_set( pAlloc, mPool );
-
- //
if(mMaxSize > 0) //size is the number of blocks (which is usually 4K), NOT bytes.
{
@@ -181,108 +150,103 @@ apr_pool_t* LLAPRPool::getAPRPool()
return mPool ;
}
-// Not thread safe
+LLVolatileAPRPool::LLVolatileAPRPool(BOOL is_local, apr_pool_t *parent, apr_size_t size, BOOL releasePoolFlag)
+ : LLAPRPool(parent, size, releasePoolFlag),
+ mNumActiveRef(0),
+ mNumTotalRef(0),
+ mMutexPool(NULL),
+ mMutexp(NULL)
+{
+ //create mutex
-// LLVolatileAPRPool::LLVolatileAPRPool(BOOL is_local, apr_pool_t *parent, apr_size_t size, BOOL releasePoolFlag)
-// : LLAPRPool(parent, size, releasePoolFlag),
-// mNumActiveRef(0),
-// mNumTotalRef(0),
-// mMutexPool(NULL),
-// mMutexp(NULL)
-// {
-// //create mutex
-//
-// // Crashfix/FIRE-4090/FIRE-4820: is_local is default to TRUE. And of today (2012-07-15) all instances of LLVolatileAPRPool seem
-// // to be created just using this default argument.
-// // Using apr_os_thread_current and apr_os_thread_equal it appears that there are pools that get access from different threads nonetheless.
-// // This would explain why mNumActiveRef sometimes gets garbled.
-// // Resolution: Always use a mutex and give it a broader test is this helps.
-//
-// // if(!is_local) //not a local apr_pool, that is: shared by multiple threads.
-//
-// //
-//
-// {
-// apr_pool_create(&mMutexPool, NULL); // Create a pool for mutex
-// apr_thread_mutex_create(&mMutexp, APR_THREAD_MUTEX_UNNESTED, mMutexPool);
-// }
-// }
-//
-// LLVolatileAPRPool::~LLVolatileAPRPool()
-// {
-// //delete mutex
-// if(mMutexp)
-// {
-// apr_thread_mutex_destroy(mMutexp);
-// apr_pool_destroy(mMutexPool);
-// }
-// }
-//
-// //
-// //define this virtual function to avoid any mistakenly calling LLAPRPool::getAPRPool().
-// //
-// //virtual
-// apr_pool_t* LLVolatileAPRPool::getAPRPool()
-// {
-// return LLVolatileAPRPool::getVolatileAPRPool() ;
-// }
-//
-// apr_pool_t* LLVolatileAPRPool::getVolatileAPRPool()
-// {
-// LLScopedLock lock(mMutexp) ;
-//
-// mNumTotalRef++ ;
-// mNumActiveRef++ ;
-//
-// if(!mPool)
-// {
-// createAPRPool() ;
-// }
-//
-// return mPool ;
-// }
-//
-// void LLVolatileAPRPool::clearVolatileAPRPool()
-// {
-// LLScopedLock lock(mMutexp) ;
-//
-// if(mNumActiveRef > 0)
-// {
-// mNumActiveRef--;
-// if(mNumActiveRef < 1)
-// {
-// if(isFull())
-// {
-// mNumTotalRef = 0 ;
-//
-// //destroy the apr_pool.
-// releaseAPRPool() ;
-// }
-// else
-// {
-// //This does not actually free the memory,
-// //it just allows the pool to re-use this memory for the next allocation.
-// apr_pool_clear(mPool) ;
-// }
-// }
-// }
-// else
-// {
-// llassert_always(mNumActiveRef > 0) ;
-// }
-//
-// //paranoia check if the pool is jammed.
-// //will remove the check before going to release.
-// llassert_always(mNumTotalRef < (FULL_VOLATILE_APR_POOL << 2)) ;
-// }
-//
-// BOOL LLVolatileAPRPool::isFull()
-// {
-// return mNumTotalRef > FULL_VOLATILE_APR_POOL ;
-// }
+ // Crashfix/FIRE-4090/FIRE-4820: is_local is default to TRUE. And of today (2012-07-15) all instances of LLVolatileAPRPool seem
+ // to be created just using this default argument.
+ // Using apr_os_thread_current and apr_os_thread_equal it appears that there are pools that get access from different threads nonetheless.
+ // This would explain why mNumActiveRef sometimes gets garbled.
+ // Resolution: Always use a mutex and give it a broader test is this helps.
-//
+ // if(!is_local) //not a local apr_pool, that is: shared by multiple threads.
+ //
+
+ {
+ apr_pool_create(&mMutexPool, NULL); // Create a pool for mutex
+ apr_thread_mutex_create(&mMutexp, APR_THREAD_MUTEX_UNNESTED, mMutexPool);
+ }
+}
+
+LLVolatileAPRPool::~LLVolatileAPRPool()
+{
+ //delete mutex
+ if(mMutexp)
+ {
+ apr_thread_mutex_destroy(mMutexp);
+ apr_pool_destroy(mMutexPool);
+ }
+}
+
+//
+//define this virtual function to avoid any mistakenly calling LLAPRPool::getAPRPool().
+//
+//virtual
+apr_pool_t* LLVolatileAPRPool::getAPRPool()
+{
+ return LLVolatileAPRPool::getVolatileAPRPool() ;
+}
+
+apr_pool_t* LLVolatileAPRPool::getVolatileAPRPool()
+{
+ LLScopedLock lock(mMutexp) ;
+
+ mNumTotalRef++ ;
+ mNumActiveRef++ ;
+
+ if(!mPool)
+ {
+ createAPRPool() ;
+ }
+
+ return mPool ;
+}
+
+void LLVolatileAPRPool::clearVolatileAPRPool()
+{
+ LLScopedLock lock(mMutexp) ;
+
+ if(mNumActiveRef > 0)
+ {
+ mNumActiveRef--;
+ if(mNumActiveRef < 1)
+ {
+ if(isFull())
+ {
+ mNumTotalRef = 0 ;
+
+ //destroy the apr_pool.
+ releaseAPRPool() ;
+ }
+ else
+ {
+ //This does not actually free the memory,
+ //it just allows the pool to re-use this memory for the next allocation.
+ apr_pool_clear(mPool) ;
+ }
+ }
+ }
+ else
+ {
+ llassert_always(mNumActiveRef > 0) ;
+ }
+
+ //paranoia check if the pool is jammed.
+ //will remove the check before going to release.
+ llassert_always(mNumTotalRef < (FULL_VOLATILE_APR_POOL << 2)) ;
+}
+
+BOOL LLVolatileAPRPool::isFull()
+{
+ return mNumTotalRef > FULL_VOLATILE_APR_POOL ;
+}
//---------------------------------------------------------------------
//
// LLScopedLock
@@ -360,14 +324,14 @@ void ll_apr_assert_status(apr_status_t status, apr_dso_handle_t *handle)
// LLAPRFile functions
//
LLAPRFile::LLAPRFile()
- : mFile(NULL)
- // mCurrentFilePoolp(NULL)
+ : mFile(NULL),
+ mCurrentFilePoolp(NULL)
{
}
LLAPRFile::LLAPRFile(const std::string& filename, apr_int32_t flags, LLVolatileAPRPool* pool)
- : mFile(NULL)
- // mCurrentFilePoolp(NULL)
+ : mFile(NULL),
+ mCurrentFilePoolp(NULL)
{
open(filename, flags, pool);
}
@@ -386,11 +350,11 @@ apr_status_t LLAPRFile::close()
mFile = NULL ;
}
- // if(mCurrentFilePoolp)
- // {
- // mCurrentFilePoolp->clearVolatileAPRPool() ;
- // mCurrentFilePoolp = NULL ;
- // }
+ if(mCurrentFilePoolp)
+ {
+ mCurrentFilePoolp->clearVolatileAPRPool() ;
+ mCurrentFilePoolp = NULL ;
+ }
return ret ;
}
@@ -401,10 +365,9 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, LLV
//check if already open some file
llassert_always(!mFile) ;
- // llassert_always(!mCurrentFilePoolp) ;
+ llassert_always(!mCurrentFilePoolp) ;
- // apr_pool_t* apr_pool = pool ? pool->getVolatileAPRPool() : NULL ;
- apr_pool_t* apr_pool(0);
+ apr_pool_t* apr_pool = pool ? pool->getVolatileAPRPool() : NULL ;
// Convert filenames with UTF-8 charaters into a shortfilename (8.3) if running under windows
@@ -436,9 +399,9 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, LLV
*sizep = file_size;
}
- // if(!mCurrentFilePoolp)
+ if(!mCurrentFilePoolp)
{
- // mCurrentFilePoolp = pool ;
+ mCurrentFilePoolp = pool ;
if(!mFile)
{
@@ -456,11 +419,10 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, BOO
//check if already open some file
llassert_always(!mFile) ;
- // llassert_always(!mCurrentFilePoolp) ;
- // llassert_always(use_global_pool) ; //be aware of using gAPRPoolp.
+ llassert_always(!mCurrentFilePoolp) ;
+ llassert_always(use_global_pool) ; //be aware of using gAPRPoolp.
- // s = apr_file_open(&mFile, ndConvertFilename(filename).c_str(), flags, APR_OS_DEFAULT, gAPRPoolp);
- s = apr_file_open(&mFile, ndConvertFilename(filename).c_str(), flags, APR_OS_DEFAULT, m_Pool.getAPRPool());
+ s = apr_file_open(&mFile, ndConvertFilename(filename).c_str(), flags, APR_OS_DEFAULT, gAPRPoolp);
if (s != APR_SUCCESS || !mFile)
{
mFile = NULL ;
@@ -473,15 +435,13 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, BOO
apr_pool_t* LLAPRFile::getAPRFilePool(apr_pool_t* pool)
{
- // if(!pool)
- // {
- // mCurrentFilePoolp = sAPRFilePoolp ;
- // return mCurrentFilePoolp->getVolatileAPRPool() ;
- // }
- //
- // return pool ;
+ if(!pool)
+ {
+ mCurrentFilePoolp = sAPRFilePoolp ;
+ return mCurrentFilePoolp->getVolatileAPRPool() ;
+ }
- return m_Pool.getAPRPool();
+ return pool ;
}
// File I/O
@@ -540,8 +500,7 @@ S32 LLAPRFile::seek(apr_seek_where_t where, S32 offset)
//
//static
-// apr_status_t LLAPRFile::close(apr_file_t* file_handle, LLVolatileAPRPool* pool)
-apr_status_t LLAPRFile::close(apr_file_t* file_handle, LLAPRPool* pool)
+apr_status_t LLAPRFile::close(apr_file_t* file_handle, LLVolatileAPRPool* pool)
{
apr_status_t ret = APR_SUCCESS ;
if(file_handle)
@@ -550,26 +509,23 @@ apr_status_t LLAPRFile::close(apr_file_t* file_handle, LLAPRPool* pool)
file_handle = NULL ;
}
- // if(pool)
- // {
- // pool->clearVolatileAPRPool() ;
- // }
+ if(pool)
+ {
+ pool->clearVolatileAPRPool() ;
+ }
return ret ;
}
//static
-// apr_file_t* LLAPRFile::open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags)
-apr_file_t* LLAPRFile::open(const std::string& filename, LLAPRPool* pool, apr_int32_t flags)
+apr_file_t* LLAPRFile::open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags)
{
apr_status_t s;
apr_file_t* file_handle ;
- // pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- // s = apr_file_open(&file_handle, ndConvertFilename(filename).c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool());
-
- s = apr_file_open(&file_handle, ndConvertFilename(filename).c_str(), flags, APR_OS_DEFAULT, pool->getAPRPool() );
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_file_open(&file_handle, ndConvertFilename(filename).c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool());
if (s != APR_SUCCESS || !file_handle)
{
ll_apr_warn_status(s);
@@ -618,10 +574,7 @@ S32 LLAPRFile::seek(apr_file_t* file_handle, apr_seek_where_t where, S32 offset)
S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool)
{
//*****************************************
- // apr_file_t* file_handle = open(filename, pool, APR_READ|APR_BINARY);
-
- LLAPRPool oPool;
- apr_file_t* file_handle = open(filename, &oPool, APR_READ|APR_BINARY);
+ apr_file_t* file_handle = open(filename, pool, APR_READ|APR_BINARY);
//*****************************************
if (!file_handle)
{
@@ -655,8 +608,7 @@ S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nb
}
//*****************************************
- // close(file_handle, pool) ;
- close(file_handle, &oPool) ;
+ close(file_handle, pool) ;
//*****************************************
return (S32)bytes_read;
}
@@ -672,10 +624,7 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n
}
//*****************************************
- // apr_file_t* file_handle = open(filename, pool, flags);
-
- LLAPRPool oPool;
- apr_file_t* file_handle = open(filename, &oPool, flags);
+ apr_file_t* file_handle = open(filename, pool, flags);
//*****************************************
if (!file_handle)
{
@@ -709,8 +658,7 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n
}
//*****************************************
- // LLAPRFile::close(file_handle, pool);
- LLAPRFile::close(file_handle, &oPool);
+ LLAPRFile::close(file_handle, pool);
//*****************************************
return (S32)bytes_written;
@@ -721,12 +669,9 @@ bool LLAPRFile::remove(const std::string& filename, LLVolatileAPRPool* pool)
{
apr_status_t s;
- // pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- // s = apr_file_remove(filename.c_str(), pool->getVolatileAPRPool());
- // pool->clearVolatileAPRPool() ;
-
- LLAPRPool oPool;
- s = apr_file_remove(filename.c_str(), oPool.getAPRPool());
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_file_remove(filename.c_str(), pool->getVolatileAPRPool());
+ pool->clearVolatileAPRPool() ;
if (s != APR_SUCCESS)
{
@@ -747,12 +692,9 @@ bool LLAPRFile::rename(const std::string& filename, const std::string& newname,
{
apr_status_t s;
- // pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- // s = apr_file_rename(filename.c_str(), newname.c_str(), pool->getVolatileAPRPool());
- // pool->clearVolatileAPRPool() ;
-
- LLAPRPool oPool;
- s = apr_file_rename(filename.c_str(), newname.c_str(), oPool.getAPRPool() );
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_file_rename(filename.c_str(), newname.c_str(), pool->getVolatileAPRPool());
+ pool->clearVolatileAPRPool() ;
if (s != APR_SUCCESS)
{
@@ -769,21 +711,18 @@ bool LLAPRFile::isExist(const std::string& filename, LLVolatileAPRPool* pool, ap
apr_file_t* apr_file;
apr_status_t s;
- // pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- // s = apr_file_open(&apr_file, ndConvertFilename(filename).c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool());
-
- LLAPRPool oPool;
- s = apr_file_open(&apr_file, ndConvertFilename(filename).c_str(), flags, APR_OS_DEFAULT, oPool.getAPRPool() );
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_file_open(&apr_file, ndConvertFilename(filename).c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool());
if (s != APR_SUCCESS || !apr_file)
{
- // pool->clearVolatileAPRPool() ;
+ pool->clearVolatileAPRPool() ;
return false;
}
else
{
apr_file_close(apr_file) ;
- // pool->clearVolatileAPRPool() ;
+ pool->clearVolatileAPRPool() ;
return true;
}
}
@@ -795,15 +734,12 @@ S32 LLAPRFile::size(const std::string& filename, LLVolatileAPRPool* pool)
apr_finfo_t info;
apr_status_t s;
- // pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- // s = apr_file_open(&apr_file, ndConvertFilename(filename).c_str(), APR_READ, APR_OS_DEFAULT, pool->getVolatileAPRPool());
-
- LLAPRPool oPool;
- s = apr_file_open(&apr_file, ndConvertFilename(filename).c_str(), APR_READ, APR_OS_DEFAULT, oPool.getAPRPool() );
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_file_open(&apr_file, ndConvertFilename(filename).c_str(), APR_READ, APR_OS_DEFAULT, pool->getVolatileAPRPool());
if (s != APR_SUCCESS || !apr_file)
{
- // pool->clearVolatileAPRPool() ;
+ pool->clearVolatileAPRPool() ;
return 0;
}
@@ -812,7 +748,7 @@ S32 LLAPRFile::size(const std::string& filename, LLVolatileAPRPool* pool)
apr_status_t s = apr_file_info_get(&info, APR_FINFO_SIZE, apr_file);
apr_file_close(apr_file) ;
- // pool->clearVolatileAPRPool() ;
+ pool->clearVolatileAPRPool() ;
if (s == APR_SUCCESS)
{
@@ -830,13 +766,10 @@ bool LLAPRFile::makeDir(const std::string& dirname, LLVolatileAPRPool* pool)
{
apr_status_t s;
- // pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- // s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, pool->getVolatileAPRPool());
- // pool->clearVolatileAPRPool() ;
-
- LLAPRPool oPool;
- s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, oPool.getAPRPool() );
-
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, pool->getVolatileAPRPool());
+ pool->clearVolatileAPRPool() ;
+
if (s != APR_SUCCESS)
{
ll_apr_warn_status(s);
@@ -851,12 +784,9 @@ bool LLAPRFile::removeDir(const std::string& dirname, LLVolatileAPRPool* pool)
{
apr_status_t s;
- // pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- // s = apr_file_remove(dirname.c_str(), pool->getVolatileAPRPool());
- // pool->clearVolatileAPRPool() ;
-
- LLAPRPool oPool;
- s = apr_file_remove(dirname.c_str(), oPool.getAPRPool() );
+ pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+ s = apr_file_remove(dirname.c_str(), pool->getVolatileAPRPool());
+ pool->clearVolatileAPRPool() ;
if (s != APR_SUCCESS)
{
diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h
index f733eecc18..af33ce666f 100644
--- a/indra/llcommon/llapr.h
+++ b/indra/llcommon/llapr.h
@@ -96,32 +96,25 @@ protected:
//which clears memory automatically.
//so it can not hold static data or data after memory is cleared
//
+class LL_COMMON_API LLVolatileAPRPool : public LLAPRPool
+{
+public:
+ LLVolatileAPRPool(BOOL is_local = TRUE, apr_pool_t *parent = NULL, apr_size_t size = 0, BOOL releasePoolFlag = TRUE);
+ virtual ~LLVolatileAPRPool();
-// Not thread safe
+ /*virtual*/ apr_pool_t* getAPRPool() ; //define this virtual function to avoid any mistakenly calling LLAPRPool::getAPRPool().
+ apr_pool_t* getVolatileAPRPool() ;
+ void clearVolatileAPRPool() ;
-// class LL_COMMON_API LLVolatileAPRPool : public LLAPRPool
-// {
-// public:
-// LLVolatileAPRPool(BOOL is_local = TRUE, apr_pool_t *parent = NULL, apr_size_t size = 0, BOOL releasePoolFlag = TRUE);
-// virtual ~LLVolatileAPRPool();
-//
-// /*virtual*/ apr_pool_t* getAPRPool() ; //define this virtual function to avoid any mistakenly calling LLAPRPool::getAPRPool().
-// apr_pool_t* getVolatileAPRPool() ;
-// void clearVolatileAPRPool() ;
-//
-// BOOL isFull() ;
-//
-// private:
-// S32 mNumActiveRef ; //number of active pointers pointing to the apr_pool.
-// S32 mNumTotalRef ; //number of total pointers pointing to the apr_pool since last creating.
-//
-// apr_thread_mutex_t *mMutexp;
-// apr_pool_t *mMutexPool;
-// } ;
+ BOOL isFull() ;
+
+private:
+ S32 mNumActiveRef ; //number of active pointers pointing to the apr_pool.
+ S32 mNumTotalRef ; //number of total pointers pointing to the apr_pool since last creating.
-typedef void LLVolatileAPRPool;
-
-//
+ apr_thread_mutex_t *mMutexp;
+ apr_pool_t *mMutexPool;
+} ;
/**
* @class LLScopedLock
@@ -212,8 +205,7 @@ class LL_COMMON_API LLAPRFile : boost::noncopyable
// make this non copyable since a copy closes the file
private:
apr_file_t* mFile ;
- LLAPRPool m_Pool;
- // LLVolatileAPRPool *mCurrentFilePoolp ; //currently in use apr_pool, could be one of them: sAPRFilePoolp, or a temp pool.
+ LLVolatileAPRPool *mCurrentFilePoolp ; //currently in use apr_pool, could be one of them: sAPRFilePoolp, or a temp pool.
public:
LLAPRFile() ;
@@ -242,13 +234,11 @@ private:
//static components
//
public:
- // static LLVolatileAPRPool *sAPRFilePoolp ; //a global apr_pool for APRFile, which is used only when local pool does not exist.
+ static LLVolatileAPRPool *sAPRFilePoolp ; //a global apr_pool for APRFile, which is used only when local pool does not exist.
private:
- // static apr_file_t* open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags);
- // static apr_status_t close(apr_file_t* file, LLVolatileAPRPool* pool) ;
- static apr_file_t* open(const std::string& filename, LLAPRPool* pool, apr_int32_t flags);
- static apr_status_t close(apr_file_t* file, LLAPRPool* pool) ;
+ static apr_file_t* open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags);
+ static apr_status_t close(apr_file_t* file, LLVolatileAPRPool* pool) ;
static S32 seek(apr_file_t* file, apr_seek_where_t where, S32 offset);
public:
// returns false if failure:
@@ -277,9 +267,6 @@ bool LL_COMMON_API ll_apr_warn_status(apr_status_t status, apr_dso_handle_t* han
void LL_COMMON_API ll_apr_assert_status(apr_status_t status);
void LL_COMMON_API ll_apr_assert_status(apr_status_t status, apr_dso_handle_t* handle);
-// Not thread safe at all, but must do for now
extern "C" LL_COMMON_API apr_pool_t* gAPRPoolp; // Global APR memory pool
-//
-
#endif // LL_LLAPR_H
diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp
index 05dc5262a1..66c31624cd 100644
--- a/indra/llcommon/llthread.cpp
+++ b/indra/llcommon/llthread.cpp
@@ -111,26 +111,11 @@ LLThread::LLThread(const std::string& name, apr_pool_t *poolp) :
else
{
mIsLocalPool = TRUE;
- // Make sure the pool gets its own allocator
-
- // apr_pool_create(&mAPRPoolp, NULL); // Create a subpool for this thread
-
- apr_allocator_t *pAlloc(0);
-
- apr_allocator_create( &pAlloc );
- apr_pool_create_ex( &mAPRPoolp, 0, 0, pAlloc );
- apr_allocator_owner_set( pAlloc, mAPRPoolp );
-
- //
-
+ apr_pool_create(&mAPRPoolp, NULL); // Create a subpool for this thread
}
mRunCondition = new LLCondition(mAPRPoolp);
- // Removed LLVolatileAPRPool
-
- // mLocalAPRFilePoolp = NULL ;
-
- //
+ mLocalAPRFilePoolp = NULL ;
}
@@ -138,15 +123,11 @@ LLThread::~LLThread()
{
shutdown();
- // Removed LLVolatileAPRPool
-
- // if(mLocalAPRFilePoolp)
- // {
- // delete mLocalAPRFilePoolp ;
- // mLocalAPRFilePoolp = NULL ;
- // }
-
- //
+ if(mLocalAPRFilePoolp)
+ {
+ delete mLocalAPRFilePoolp ;
+ mLocalAPRFilePoolp = NULL ;
+ }
}
void LLThread::shutdown()
@@ -194,10 +175,7 @@ void LLThread::shutdown()
delete mRunCondition;
mRunCondition = 0;
- // Removed LLVolatileAPRPool
- // if (mIsLocalPool && mAPRPoolp)
- if ( mAPRPoolp)
- //
+ if (mIsLocalPool && mAPRPoolp)
{
apr_pool_destroy(mAPRPoolp);
mAPRPoolp = 0;
diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h
index dcea03badd..b52e70ab2e 100644
--- a/indra/llcommon/llthread.h
+++ b/indra/llcommon/llthread.h
@@ -84,11 +84,8 @@ public:
void start(void);
apr_pool_t *getAPRPool() { return mAPRPoolp; }
+ LLVolatileAPRPool* getLocalAPRFilePool() { return mLocalAPRFilePoolp ; }
- // Removed LLVolatileAPRPool
- // LLVolatileAPRPool* getLocalAPRFilePool() { return mLocalAPRFilePoolp ; }
- //
-
U32 getID() const { return mID; }
private:
@@ -110,10 +107,7 @@ protected:
//a local apr_pool for APRFile operations in this thread. If it exists, LLAPRFile::sAPRFilePoolp should not be used.
//Note: this pool is used by APRFile ONLY, do NOT use it for any other purposes.
// otherwise it will cause severe memory leaking!!! --bao
-
- // Removed LLVolatileAPRPool
- // LLVolatileAPRPool *mLocalAPRFilePoolp ;
- //
+ LLVolatileAPRPool *mLocalAPRFilePoolp ;
void setQuitting();
diff --git a/indra/llcommon/llthreadsafequeue.cpp b/indra/llcommon/llthreadsafequeue.cpp
index 4996695822..8a73e632a9 100644
--- a/indra/llcommon/llthreadsafequeue.cpp
+++ b/indra/llcommon/llthreadsafequeue.cpp
@@ -39,34 +39,13 @@ LLThreadSafeQueueImplementation::LLThreadSafeQueueImplementation(apr_pool_t * po
mPool(pool),
mQueue(0)
{
-
- // Make sure the pool gets its own allocator
-
- // if(mOwnsPool) {
- // apr_status_t status = apr_pool_create(&mPool, 0);
- // if(status != APR_SUCCESS) throw LLThreadSafeQueueError("failed to allocate pool");
- // } else {
- // ; // No op.
- // }
-
- if(mOwnsPool)
- {
- apr_allocator_t *pAlloc(0);
-
- apr_status_t status = apr_allocator_create( &pAlloc );
- status = apr_pool_create_ex( &mPool, 0, 0, pAlloc );
- apr_allocator_owner_set( pAlloc, mPool );
-
- if(status != APR_SUCCESS)
- throw LLThreadSafeQueueError("failed to allocate pool");
- }
- else
- {
+ if(mOwnsPool) {
+ apr_status_t status = apr_pool_create(&mPool, 0);
+ if(status != APR_SUCCESS) throw LLThreadSafeQueueError("failed to allocate pool");
+ } else {
; // No op.
}
- //
-
apr_status_t status = apr_queue_create(&mQueue, capacity, mPool);
if(status != APR_SUCCESS) throw LLThreadSafeQueueError("failed to allocate queue");
}
diff --git a/indra/llcommon/llworkerthread.cpp b/indra/llcommon/llworkerthread.cpp
index b7c3b113ba..3d05a30ac2 100644
--- a/indra/llcommon/llworkerthread.cpp
+++ b/indra/llcommon/llworkerthread.cpp
@@ -39,14 +39,10 @@ LLWorkerThread::LLWorkerThread(const std::string& name, bool threaded, bool shou
{
mDeleteMutex = new LLMutex(NULL);
- // Removed LLVolatileAPRPool
-
- // if(!mLocalAPRFilePoolp)
- // {
- // mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
- // }
-
- //
+ if(!mLocalAPRFilePoolp)
+ {
+ mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
+ }
}
LLWorkerThread::~LLWorkerThread()
diff --git a/indra/llvfs/lllfsthread.cpp b/indra/llvfs/lllfsthread.cpp
index f0455b09dd..073b1af2a1 100644
--- a/indra/llvfs/lllfsthread.cpp
+++ b/indra/llvfs/lllfsthread.cpp
@@ -67,14 +67,10 @@ LLLFSThread::LLLFSThread(bool threaded) :
LLQueuedThread("LFS", threaded),
mPriorityCounter(PRIORITY_LOWBITS)
{
- // Removed LLVolatileAPRPool
-
- // if(!mLocalAPRFilePoolp)
- // {
- // mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
- // }
-
- //
+ if(!mLocalAPRFilePoolp)
+ {
+ mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
+ }
}
LLLFSThread::~LLLFSThread()
@@ -187,12 +183,7 @@ bool LLLFSThread::Request::processRequest()
{
llassert(mOffset >= 0);
LLAPRFile infile ; // auto-closes
-
- // Removed LLVolatileAPRPool
- // infile.open(mFileName, LL_APR_RB, mThread->getLocalAPRFilePool());
- infile.open(mFileName, LL_APR_RB, 0, 0);
- //
-
+ infile.open(mFileName, LL_APR_RB, mThread->getLocalAPRFilePool());
if (!infile.getFileHandle())
{
llwarns << "LLLFS: Unable to read file: " << mFileName << llendl;
@@ -215,12 +206,7 @@ bool LLLFSThread::Request::processRequest()
if (mOffset < 0)
flags |= APR_APPEND;
LLAPRFile outfile ; // auto-closes
-
- // Removed LLVolatileAPRPool
- // outfile.open(mFileName, flags, mThread->getLocalAPRFilePool());
- outfile.open(mFileName, flags, 0, 0);
- //
-
+ outfile.open(mFileName, flags, mThread->getLocalAPRFilePool());
if (!outfile.getFileHandle())
{
llwarns << "LLLFS: Unable to write file: " << mFileName << llendl;
diff --git a/indra/newview/llmainlooprepeater.cpp b/indra/newview/llmainlooprepeater.cpp
index 7c9eaaddc7..5c020e6d98 100644
--- a/indra/newview/llmainlooprepeater.cpp
+++ b/indra/newview/llmainlooprepeater.cpp
@@ -46,13 +46,7 @@ void LLMainLoopRepeater::start(void)
{
if(mQueue != 0) return;
- // Make sure the queue gets it's own pool
-
- // mQueue = new LLThreadSafeQueue(gAPRPoolp, 1024);
- mQueue = new LLThreadSafeQueue(0, 1024);
-
- //
-
+ mQueue = new LLThreadSafeQueue(gAPRPoolp, 1024);
mMainLoopConnection = LLEventPumps::instance().
obtain("mainloop").listen(LLEventPump::inventName(), boost::bind(&LLMainLoopRepeater::onMainLoop, this, _1));
mRepeaterConnection = LLEventPumps::instance().
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 4760840927..8632890bbb 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -177,12 +177,7 @@ private:
bool LLTextureCacheLocalFileWorker::doRead()
{
- // Removed LLVolatileAPRPool
-
- // S32 local_size = LLAPRFile::size(mFileName, mCache->getLocalAPRFilePool());
- S32 local_size = LLAPRFile::size(mFileName, 0);
-
- //
+ S32 local_size = LLAPRFile::size(mFileName, mCache->getLocalAPRFilePool());
if (local_size > 0 && mFileName.size() > 4)
{
@@ -256,12 +251,7 @@ bool LLTextureCacheLocalFileWorker::doRead()
}
mReadData = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), mDataSize);
- // Removed LLVolatileAPRPool
-
- // S32 bytes_read = LLAPRFile::readEx(mFileName, mReadData, mOffset, mDataSize, mCache->getLocalAPRFilePool());
- S32 bytes_read = LLAPRFile::readEx(mFileName, mReadData, mOffset, mDataSize, 0);
-
- //
+ S32 bytes_read = LLAPRFile::readEx(mFileName, mReadData, mOffset, mDataSize, mCache->getLocalAPRFilePool());
if (bytes_read != mDataSize)
{
@@ -342,14 +332,7 @@ bool LLTextureCacheRemoteWorker::doRead()
// Is it a JPEG2000 file?
{
local_filename = filename + ".j2c";
-
- // Removed LLVolatileAPRPool
-
- // local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
- local_size = LLAPRFile::size(local_filename, 0 );
-
- //
-
+ local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
if (local_size > 0)
{
mImageFormat = IMG_CODEC_J2C;
@@ -359,14 +342,7 @@ bool LLTextureCacheRemoteWorker::doRead()
if (local_size == 0)
{
local_filename = filename + ".jpg";
-
- // Removed LLVolatileAPRPool
-
- // local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
- local_size = LLAPRFile::size(local_filename, 0);
-
- //
-
+ local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
if (local_size > 0)
{
mImageFormat = IMG_CODEC_JPEG;
@@ -377,14 +353,7 @@ bool LLTextureCacheRemoteWorker::doRead()
if (local_size == 0)
{
local_filename = filename + ".tga";
-
- // Removed LLVolatileAPRPool
-
- // local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
- local_size = LLAPRFile::size(local_filename, 0);
-
- //
-
+ local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
if (local_size > 0)
{
mImageFormat = IMG_CODEC_TGA;
@@ -410,15 +379,8 @@ bool LLTextureCacheRemoteWorker::doRead()
}
// Allocate read buffer
mReadData = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), mDataSize);
-
- // Removed LLVolatileAPRPool
-
- // S32 bytes_read = LLAPRFile::readEx(local_filename,
- // mReadData, mOffset, mDataSize, mCache->getLocalAPRFilePool());
- S32 bytes_read = LLAPRFile::readEx(local_filename, mReadData, mOffset, mDataSize, 0);
-
- //
-
+ S32 bytes_read = LLAPRFile::readEx(local_filename,
+ mReadData, mOffset, mDataSize, mCache->getLocalAPRFilePool());
if (bytes_read != mDataSize)
{
llwarns << "Error reading file from local cache: " << local_filename
@@ -469,15 +431,8 @@ bool LLTextureCacheRemoteWorker::doRead()
size = llmin(size, mDataSize);
// Allocate the read buffer
mReadData = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), size);
-
- // Removed LLVolatileAPRPool
-
- // S32 bytes_read = LLAPRFile::readEx(mCache->mHeaderDataFileName,
- // mReadData, offset, size, mCache->getLocalAPRFilePool());
- S32 bytes_read = LLAPRFile::readEx(mCache->mHeaderDataFileName, mReadData, offset, size, 0);
-
- //
-
+ S32 bytes_read = LLAPRFile::readEx(mCache->mHeaderDataFileName,
+ mReadData, offset, size, mCache->getLocalAPRFilePool());
if (bytes_read != size)
{
llwarns << "LLTextureCacheWorker: " << mID
@@ -503,13 +458,7 @@ bool LLTextureCacheRemoteWorker::doRead()
if (!done && (mState == BODY))
{
std::string filename = mCache->getTextureFileName(mID);
-
- // Removed LLVolatileAPRPool
-
- // S32 filesize = LLAPRFile::size(filename, mCache->getLocalAPRFilePool());
- S32 filesize = LLAPRFile::size(filename, 0);
-
- // >
+ S32 filesize = LLAPRFile::size(filename, mCache->getLocalAPRFilePool());
if (filesize && (filesize + TEXTURE_CACHE_ENTRY_SIZE) > mOffset)
{
@@ -549,18 +498,10 @@ bool LLTextureCacheRemoteWorker::doRead()
mReadData = data;
// Read the data at last
-
- // Removed LLVolatileAPRPool
-
- // S32 bytes_read = LLAPRFile::readEx(filename,
- // mReadData + data_offset,
- // file_offset, file_size,
- // mCache->getLocalAPRFilePool());
- S32 bytes_read = LLAPRFile::readEx(filename,mReadData + data_offset, file_offset, file_size, 0 );
-
-
- //
-
+ S32 bytes_read = LLAPRFile::readEx(filename,
+ mReadData + data_offset,
+ file_offset, file_size,
+ mCache->getLocalAPRFilePool());
if (bytes_read != file_size)
{
llwarns << "LLTextureCacheWorker: " << mID
@@ -661,26 +602,13 @@ bool LLTextureCacheRemoteWorker::doWrite()
U8* padBuffer = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), TEXTURE_CACHE_ENTRY_SIZE);
memset(padBuffer, 0, TEXTURE_CACHE_ENTRY_SIZE); // Init with zeros
memcpy(padBuffer, mWriteData, mDataSize); // Copy the write buffer
-
- // Removed LLVolatileAPRPool
-
- // bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, padBuffer, offset, size, mCache->getLocalAPRFilePool());
- bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, padBuffer, offset, size, 0);
-
- //
-
+ bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, padBuffer, offset, size, mCache->getLocalAPRFilePool());
FREE_MEM(LLImageBase::getPrivatePool(), padBuffer);
}
else
{
// Write the header record (== first TEXTURE_CACHE_ENTRY_SIZE bytes of the raw file) in the header file
-
- // Removed LLVolatileAPRPool
-
- // bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, mWriteData, offset, size, mCache->getLocalAPRFilePool());
- bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, mWriteData, offset, size, 0);
-
- //
+ bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, mWriteData, offset, size, mCache->getLocalAPRFilePool());
}
if (bytes_written <= 0)
@@ -713,17 +641,10 @@ bool LLTextureCacheRemoteWorker::doWrite()
// build the cache file name from the UUID
std::string filename = mCache->getTextureFileName(mID);
// llinfos << "Writing Body: " << filename << " Bytes: " << file_offset+file_size << llendl;
-
- // Removed LLVolatileAPRPool
-
- // S32 bytes_written = LLAPRFile::writeEx( filename,
- // mWriteData + TEXTURE_CACHE_ENTRY_SIZE,
- // 0, file_size,
- // mCache->getLocalAPRFilePool());
- S32 bytes_written = LLAPRFile::writeEx( filename, mWriteData + TEXTURE_CACHE_ENTRY_SIZE, 0, file_size, 0);
-
- //
-
+ S32 bytes_written = LLAPRFile::writeEx( filename,
+ mWriteData + TEXTURE_CACHE_ENTRY_SIZE,
+ 0, file_size,
+ mCache->getLocalAPRFilePool());
if (bytes_written <= 0)
{
llwarns << "LLTextureCacheWorker: " << mID
@@ -926,14 +847,7 @@ BOOL LLTextureCache::isInLocal(const LLUUID& id)
// Is it a JPEG2000 file?
{
local_filename = filename + ".j2c";
-
- // Removed LLVolatileAPRPool
-
- // local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
- local_size = LLAPRFile::size(local_filename, 0);
-
- //
-
+ local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
if (local_size > 0)
{
return TRUE ;
@@ -943,14 +857,7 @@ BOOL LLTextureCache::isInLocal(const LLUUID& id)
// If not, is it a jpeg file?
{
local_filename = filename + ".jpg";
-
- // Removed LLVolatileAPRPool
-
- // local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
- local_size = LLAPRFile::size(local_filename, 0);
-
- //
-
+ local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
if (local_size > 0)
{
return TRUE ;
@@ -960,14 +867,7 @@ BOOL LLTextureCache::isInLocal(const LLUUID& id)
// Hmm... What about a targa file? (used for UI texture mostly)
{
local_filename = filename + ".tga";
-
- // Removed LLVolatileAPRPool
-
- // local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
- local_size = LLAPRFile::size(local_filename, 0);
-
- //
-
+ local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
if (local_size > 0)
{
return TRUE ;
@@ -1013,22 +913,10 @@ void LLTextureCache::purgeCache(ELLPath location)
if(LLFile::isdir(mTexturesDirName))
{
std::string file_name = gDirUtilp->getExpandedFilename(location, entries_filename);
-
- // Removed LLVolatileAPRPool
-
- // LLAPRFile::remove(file_name, getLocalAPRFilePool());
- LLAPRFile::remove(file_name, 0);
-
- //
+ LLAPRFile::remove(file_name, getLocalAPRFilePool());
file_name = gDirUtilp->getExpandedFilename(location, cache_filename);
-
- // Removed LLVolatileAPRPool
-
- // LLAPRFile::remove(file_name, getLocalAPRFilePool());
- LLAPRFile::remove(file_name, 0);
-
- //
+ LLAPRFile::remove(file_name, getLocalAPRFilePool());
purgeAllTextures(true);
}
@@ -1104,14 +992,7 @@ LLAPRFile* LLTextureCache::openHeaderEntriesFile(bool readonly, S32 offset)
{
llassert_always(mHeaderAPRFile == NULL);
apr_int32_t flags = readonly ? APR_READ|APR_BINARY : APR_READ|APR_WRITE|APR_BINARY;
-
- // Removed LLVolatileAPRPool
-
- // mHeaderAPRFile = new LLAPRFile(mHeaderEntriesFileName, flags, getLocalAPRFilePool());
- mHeaderAPRFile = new LLAPRFile(mHeaderEntriesFileName, flags, 0);
-
- //
-
+ mHeaderAPRFile = new LLAPRFile(mHeaderEntriesFileName, flags, getLocalAPRFilePool());
if(offset > 0)
{
mHeaderAPRFile->seek(APR_SET, offset);
@@ -1134,19 +1015,11 @@ void LLTextureCache::readEntriesHeader()
{
// mHeaderEntriesInfo initializes to default values so safe not to read it
llassert_always(mHeaderAPRFile == NULL);
-
- // Removed LLVolatileAPRPool
-
- // if (LLAPRFile::isExist(mHeaderEntriesFileName, getLocalAPRFilePool()))
- // {
- // LLAPRFile::readEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo),
- // getLocalAPRFilePool());
- // }
- if (LLAPRFile::isExist(mHeaderEntriesFileName, 0) )
+ if (LLAPRFile::isExist(mHeaderEntriesFileName, getLocalAPRFilePool()))
{
- LLAPRFile::readEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo), 0);
+ LLAPRFile::readEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo),
+ getLocalAPRFilePool());
}
- //
else //create an empty entries header.
{
mHeaderEntriesInfo.mVersion = sHeaderCacheVersion ;
@@ -1160,13 +1033,8 @@ void LLTextureCache::writeEntriesHeader()
llassert_always(mHeaderAPRFile == NULL);
if (!mReadOnly)
{
- // Removed LLVolatileAPRPool
-
- // LLAPRFile::writeEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo),
- // getLocalAPRFilePool());
- LLAPRFile::writeEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo), 0);
-
- //
+ LLAPRFile::writeEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo),
+ getLocalAPRFilePool());
}
}
@@ -1755,14 +1623,7 @@ void LLTextureCache::purgeTextures(bool validate)
if (uuididx == validate_idx)
{
LL_DEBUGS("TextureCache") << "Validating: " << filename << "Size: " << entries[idx].mBodySize << LL_ENDL;
-
- // Removed LLVolatileAPRPool
-
- // S32 bodysize = LLAPRFile::size(filename, getLocalAPRFilePool());
- S32 bodysize = LLAPRFile::size(filename, 0);
-
- //
-
+ S32 bodysize = LLAPRFile::size(filename, getLocalAPRFilePool());
if (bodysize != entries[idx].mBodySize)
{
LL_WARNS("TextureCache") << "TEXTURE CACHE BODY HAS BAD SIZE: " << bodysize << " != " << entries[idx].mBodySize
@@ -1997,13 +1858,7 @@ void LLTextureCache::removeCachedTexture(const LLUUID& id)
mTexturesSizeMap.erase(id);
}
mHeaderIDMap.erase(id);
-
- // Removed LLVolatileAPRPool
-
- // LLAPRFile::remove(getTextureFileName(id), getLocalAPRFilePool());
- LLAPRFile::remove(getTextureFileName(id), 0);
-
- //
+ LLAPRFile::remove(getTextureFileName(id), getLocalAPRFilePool());
}
//called after mHeaderMutex is locked.
@@ -2015,12 +1870,7 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename)
{
if (entry.mBodySize == 0) // Always attempt to remove when mBodySize > 0.
{
- // Removed LLVolatileAPRPool
-
- // if (LLAPRFile::isExist(filename, getLocalAPRFilePool())) // Sanity check. Shouldn't exist when body size is 0.
- if (LLAPRFile::isExist(filename, 0)) // Sanity check. Shouldn't exist when body size is 0.
- //
-
+ if (LLAPRFile::isExist(filename, getLocalAPRFilePool())) // Sanity check. Shouldn't exist when body size is 0.
{
LL_WARNS("TextureCache") << "Entry has body size of zero but file " << filename << " exists. Deleting this file, too." << LL_ENDL;
}
@@ -2040,12 +1890,7 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename)
if (file_maybe_exists)
{
- // Removed LLVolatileAPRPool
-
- // LLAPRFile::remove(filename, getLocalAPRFilePool());
- LLAPRFile::remove(filename, 0);
-
- //
+ LLAPRFile::remove(filename, getLocalAPRFilePool());
}
}
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index eace21112c..7db19c5c1b 100644
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -268,10 +268,7 @@ LLVOCache::LLVOCache():
mCacheSize(1)
{
mEnabled = gSavedSettings.getBOOL("ObjectCacheEnabled");
-
- // Removed LLVolatileAPRPool
- // mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
- //
+ mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
}
LLVOCache::~LLVOCache()
@@ -281,10 +278,7 @@ LLVOCache::~LLVOCache()
writeCacheHeader();
clearCacheInMemory();
}
-
- // Removed LLVolatileAPRPool
- // delete mLocalAPRFilePoolp;
- //
+ delete mLocalAPRFilePoolp;
}
void LLVOCache::setDirNames(ELLPath location)
@@ -441,10 +435,7 @@ void LLVOCache::removeFromCache(HeaderEntryInfo* entry)
std::string filename;
getObjectCacheFilename(entry->mHandle, filename);
-
- // LLAPRFile::remove(filename, mLocalAPRFilePoolp);
- LLAPRFile::remove(filename, 0);
-
+ LLAPRFile::remove(filename, mLocalAPRFilePoolp);
entry->mTime = INVALID_TIME ;
updateEntry(entry) ; //update the head file.
}
@@ -461,11 +452,9 @@ void LLVOCache::readCacheHeader()
clearCacheInMemory();
bool success = true ;
- // if (LLAPRFile::isExist(mHeaderFileName, mLocalAPRFilePoolp))
- if (LLAPRFile::isExist(mHeaderFileName, 0))
+ if (LLAPRFile::isExist(mHeaderFileName, mLocalAPRFilePoolp))
{
- // LLAPRFile apr_file(mHeaderFileName, APR_READ|APR_BINARY, mLocalAPRFilePoolp);
- LLAPRFile apr_file(mHeaderFileName, APR_READ|APR_BINARY, 0 );
+ LLAPRFile apr_file(mHeaderFileName, APR_READ|APR_BINARY, mLocalAPRFilePoolp);
//read the meta element
success = check_read(&apr_file, &mMetaInfo, sizeof(HeaderMetaInfo)) ;
@@ -550,8 +539,7 @@ void LLVOCache::writeCacheHeader()
bool success = true ;
{
- // LLAPRFile apr_file(mHeaderFileName, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
- LLAPRFile apr_file(mHeaderFileName, APR_CREATE|APR_WRITE|APR_BINARY, 0);
+ LLAPRFile apr_file(mHeaderFileName, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
//write the meta element
success = check_write(&apr_file, &mMetaInfo, sizeof(HeaderMetaInfo)) ;
@@ -589,9 +577,7 @@ void LLVOCache::writeCacheHeader()
BOOL LLVOCache::updateEntry(const HeaderEntryInfo* entry)
{
- // LLAPRFile apr_file(mHeaderFileName, APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
- LLAPRFile apr_file(mHeaderFileName, APR_WRITE|APR_BINARY, 0);
-
+ LLAPRFile apr_file(mHeaderFileName, APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
apr_file.seek(APR_SET, entry->mIndex * sizeof(HeaderEntryInfo) + sizeof(HeaderMetaInfo)) ;
return check_write(&apr_file, (void*)entry, sizeof(HeaderEntryInfo)) ;
@@ -617,8 +603,7 @@ void LLVOCache::readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::voca
{
std::string filename;
getObjectCacheFilename(handle, filename);
- // LLAPRFile apr_file(filename, APR_READ|APR_BINARY, mLocalAPRFilePoolp);
- LLAPRFile apr_file(filename, APR_READ|APR_BINARY, 0);
+ LLAPRFile apr_file(filename, APR_READ|APR_BINARY, mLocalAPRFilePoolp);
LLUUID cache_id ;
success = check_read(&apr_file, cache_id.mData, UUID_BYTES) ;
@@ -741,8 +726,7 @@ void LLVOCache::writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry:
{
std::string filename;
getObjectCacheFilename(handle, filename);
- // LLAPRFile apr_file(filename, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
- LLAPRFile apr_file(filename, APR_CREATE|APR_WRITE|APR_BINARY, 0);
+ LLAPRFile apr_file(filename, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
success = check_write(&apr_file, (void*)id.mData, UUID_BYTES) ;
diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h
index 4399cfe91b..14e3b4c793 100644
--- a/indra/newview/llvocache.h
+++ b/indra/newview/llvocache.h
@@ -142,11 +142,7 @@ private:
U32 mNumEntries;
std::string mHeaderFileName ;
std::string mObjectCacheDirName;
-
- // Removed LLVolatileAPRPool
- // LLVolatileAPRPool* mLocalAPRFilePoolp ;
- //
-
+ LLVolatileAPRPool* mLocalAPRFilePoolp ;
header_entry_queue_t mHeaderEntryQueue;
handle_entry_map_t mHandleEntryMap;