Wrap sGlobalRawMemory in AIThreadSafe.
This is accessed by different threads. Other globals like it might also be accessed by different threads, this has to be investigated.
This commit is contained in:
committed by
Siana Gearz
parent
a43f1ee299
commit
3bde58d970
@@ -245,7 +245,7 @@ U8* LLImageBase::allocateDataSize(S32 width, S32 height, S32 ncomponents, S32 si
|
||||
// LLImageRaw
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
S32 LLImageRaw::sGlobalRawMemory = 0;
|
||||
AITHREADSAFESIMPLE(S32, LLImageRaw::sGlobalRawMemory, );
|
||||
S32 LLImageRaw::sRawImageCount = 0;
|
||||
S32 LLImageRaw::sRawImageCachedCount = 0;
|
||||
|
||||
@@ -295,23 +295,25 @@ LLImageRaw::~LLImageRaw()
|
||||
U8* LLImageRaw::allocateData(S32 size)
|
||||
{
|
||||
U8* res = LLImageBase::allocateData(size);
|
||||
sGlobalRawMemory += getDataSize();
|
||||
*AIAccess<S32>(sGlobalRawMemory) += getDataSize();
|
||||
return res;
|
||||
}
|
||||
|
||||
// virtual
|
||||
U8* LLImageRaw::reallocateData(S32 size)
|
||||
{
|
||||
sGlobalRawMemory -= getDataSize();
|
||||
S32 old_data_size = getDataSize();
|
||||
U8* res = LLImageBase::reallocateData(size);
|
||||
sGlobalRawMemory += getDataSize();
|
||||
*AIAccess<S32>(sGlobalRawMemory) += getDataSize() - old_data_size;
|
||||
return res;
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLImageRaw::deleteData()
|
||||
{
|
||||
sGlobalRawMemory -= getDataSize();
|
||||
{
|
||||
*AIAccess<S32>(sGlobalRawMemory) -= getDataSize();
|
||||
}
|
||||
LLImageBase::deleteData();
|
||||
}
|
||||
|
||||
@@ -327,7 +329,7 @@ void LLImageRaw::setDataAndSize(U8 *data, S32 width, S32 height, S8 components)
|
||||
LLImageBase::setSize(width, height, components) ;
|
||||
LLImageBase::setDataAndSize(data, width * height * components) ;
|
||||
|
||||
sGlobalRawMemory += getDataSize();
|
||||
*AIAccess<S32>(sGlobalRawMemory) += getDataSize();
|
||||
}
|
||||
|
||||
BOOL LLImageRaw::resize(U16 width, U16 height, S8 components)
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "llstring.h"
|
||||
#include "llmemory.h"
|
||||
#include "llthread.h"
|
||||
#include "aithreadsafe.h"
|
||||
|
||||
const S32 MIN_IMAGE_MIP = 2; // 4x4, only used for expand/contract power of 2
|
||||
const S32 MAX_IMAGE_MIP = 11; // 2048x2048
|
||||
@@ -241,7 +242,7 @@ protected:
|
||||
void setDataAndSize(U8 *data, S32 width, S32 height, S8 components) ;
|
||||
|
||||
public:
|
||||
static S32 sGlobalRawMemory;
|
||||
static AIThreadSafeSimple<S32> sGlobalRawMemory;
|
||||
static S32 sRawImageCount;
|
||||
|
||||
static S32 sRawImageCachedCount;
|
||||
|
||||
Reference in New Issue
Block a user