MAINT-4009: Patching the final leak of LLViewerFetchedTexture objects occurring because the LLWearable class was not properly destroying itself.
parent
b34cdbaa69
commit
75538968db
|
|
@ -43,9 +43,24 @@ S32 LLWearable::sCurrentDefinitionVersion = 1;
|
|||
// Private local functions
|
||||
static std::string terse_F32_to_string(F32 f);
|
||||
|
||||
LLWearable::LLWearable()
|
||||
: mDefinitionVersion(-1),
|
||||
mName(),
|
||||
mDescription(),
|
||||
mPermissions(),
|
||||
mSaleInfo(),
|
||||
mType(LLWearableType::WT_NONE),
|
||||
mSavedVisualParamMap(),
|
||||
mVisualParamIndexMap(),
|
||||
mTEMap(),
|
||||
mSavedTEMap()
|
||||
{
|
||||
}
|
||||
|
||||
// virtual
|
||||
LLWearable::~LLWearable()
|
||||
{
|
||||
destroyTextures();
|
||||
}
|
||||
|
||||
const std::string& LLWearable::getTypeLabel() const
|
||||
|
|
@ -620,17 +635,10 @@ void LLWearable::syncImages(te_map_t &src, te_map_t &dst)
|
|||
|
||||
void LLWearable::destroyTextures()
|
||||
{
|
||||
for( te_map_t::iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter )
|
||||
{
|
||||
LLLocalTextureObject *lto = iter->second;
|
||||
delete lto;
|
||||
}
|
||||
std::for_each(mTEMap.begin(), mTEMap.end(), DeletePairedPointer());
|
||||
mTEMap.clear();
|
||||
for( te_map_t::iterator iter = mSavedTEMap.begin(); iter != mSavedTEMap.end(); ++iter )
|
||||
{
|
||||
LLLocalTextureObject *lto = iter->second;
|
||||
delete lto;
|
||||
}
|
||||
|
||||
std::for_each(mSavedTEMap.begin(), mSavedTEMap.end(), DeletePairedPointer());
|
||||
mSavedTEMap.clear();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ class LLWearable
|
|||
// Constructors and destructors
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
LLWearable();
|
||||
virtual ~LLWearable();
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Reference in New Issue