fix for SH-1642: [PUBLIC_JIRA_USERS][crashhunters] crash at LLViewerTextureList::removeImageFromList(LLViewerFetchedTexture *) [secondlife-bin llviewertexturelist.cpp]
parent
60867888ba
commit
cff4c6e885
|
|
@ -76,7 +76,6 @@ LLStat LLViewerTextureList::sFormattedMemStat(32, TRUE);
|
|||
LLViewerTextureList gTextureList;
|
||||
static LLFastTimer::DeclareTimer FTM_PROCESS_IMAGES("Process Images");
|
||||
|
||||
U32 LLViewerTextureList::sRenderThreadID = 0 ;
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
LLViewerTextureList::LLViewerTextureList()
|
||||
|
|
@ -90,7 +89,6 @@ LLViewerTextureList::LLViewerTextureList()
|
|||
|
||||
void LLViewerTextureList::init()
|
||||
{
|
||||
sRenderThreadID = LLThread::currentID() ;
|
||||
mInitialized = TRUE ;
|
||||
sNumImages = 0;
|
||||
mUpdateStats = TRUE;
|
||||
|
|
@ -502,10 +500,9 @@ LLViewerFetchedTexture *LLViewerTextureList::findImage(const LLUUID &image_id)
|
|||
return iter->second;
|
||||
}
|
||||
|
||||
void LLViewerTextureList::addImageToList(LLViewerFetchedTexture *image, U32 thread_id)
|
||||
void LLViewerTextureList::addImageToList(LLViewerFetchedTexture *image)
|
||||
{
|
||||
llassert_always(mInitialized) ;
|
||||
llassert_always(sRenderThreadID == thread_id);
|
||||
llassert(image);
|
||||
if (image->isInImageList())
|
||||
{
|
||||
|
|
@ -519,10 +516,9 @@ void LLViewerTextureList::addImageToList(LLViewerFetchedTexture *image, U32 thre
|
|||
image->setInImageList(TRUE) ;
|
||||
}
|
||||
|
||||
void LLViewerTextureList::removeImageFromList(LLViewerFetchedTexture *image, U32 thread_id)
|
||||
void LLViewerTextureList::removeImageFromList(LLViewerFetchedTexture *image)
|
||||
{
|
||||
llassert_always(mInitialized) ;
|
||||
llassert_always(sRenderThreadID == thread_id);
|
||||
llassert(image);
|
||||
if (!image->isInImageList())
|
||||
{
|
||||
|
|
@ -659,10 +655,7 @@ void LLViewerTextureList::updateImagesDecodePriorities()
|
|||
const F32 LAZY_FLUSH_TIMEOUT = 30.f; // stop decoding
|
||||
const F32 MAX_INACTIVE_TIME = 50.f; // actually delete
|
||||
S32 min_refs = 3; // 1 for mImageList, 1 for mUUIDMap, 1 for local reference
|
||||
if (imagep->hasCallbacks())
|
||||
{
|
||||
min_refs++; // Add an extra reference if we're on the loaded callback list
|
||||
}
|
||||
|
||||
S32 num_refs = imagep->getNumRefs();
|
||||
if (num_refs == min_refs)
|
||||
{
|
||||
|
|
@ -719,9 +712,9 @@ void LLViewerTextureList::updateImagesDecodePriorities()
|
|||
if ((decode_priority_test < old_priority_test * .8f) ||
|
||||
(decode_priority_test > old_priority_test * 1.25f))
|
||||
{
|
||||
removeImageFromList(imagep, sRenderThreadID);
|
||||
removeImageFromList(imagep);
|
||||
imagep->setDecodePriority(decode_priority);
|
||||
addImageToList(imagep, sRenderThreadID);
|
||||
addImageToList(imagep);
|
||||
}
|
||||
update_counter--;
|
||||
}
|
||||
|
|
@ -893,8 +886,6 @@ void LLViewerTextureList::decodeAllImages(F32 max_time)
|
|||
{
|
||||
LLTimer timer;
|
||||
|
||||
llassert_always(sRenderThreadID == LLThread::currentID());
|
||||
|
||||
// Update texture stats and priorities
|
||||
std::vector<LLPointer<LLViewerFetchedTexture> > image_list;
|
||||
for (image_priority_list_t::iterator iter = mImageList.begin();
|
||||
|
|
|
|||
|
|
@ -121,8 +121,8 @@ private:
|
|||
void addImage(LLViewerFetchedTexture *image);
|
||||
void deleteImage(LLViewerFetchedTexture *image);
|
||||
|
||||
void addImageToList(LLViewerFetchedTexture *image, U32 thread_id = LLThread::currentID());
|
||||
void removeImageFromList(LLViewerFetchedTexture *image, U32 thread_id = LLThread::currentID());
|
||||
void addImageToList(LLViewerFetchedTexture *image);
|
||||
void removeImageFromList(LLViewerFetchedTexture *image);
|
||||
|
||||
LLViewerFetchedTexture * getImage(const LLUUID &image_id,
|
||||
BOOL usemipmap = TRUE,
|
||||
|
|
@ -208,9 +208,6 @@ public:
|
|||
private:
|
||||
static S32 sNumImages;
|
||||
static void (*sUUIDCallback)(void**, const LLUUID &);
|
||||
|
||||
//debug use
|
||||
static U32 sRenderThreadID;
|
||||
};
|
||||
|
||||
class LLUIImageList : public LLImageProviderInterface, public LLSingleton<LLUIImageList>
|
||||
|
|
|
|||
Loading…
Reference in New Issue