Crash at LLViewerTexture::updateClass()

master
Andrey Kleshchev 2024-08-01 19:55:16 +03:00 committed by Andrey Kleshchev
parent 0ff2bd1a40
commit 793f5ac341
3 changed files with 5 additions and 5 deletions

View File

@ -539,9 +539,9 @@ void LLViewerTexture::updateClass()
LL_WARNS() << "Low system memory detected, emergency downrezzing off screen textures" << LL_ENDL;
sDesiredDiscardBias = llmax(sDesiredDiscardBias, 1.5f);
for (auto image : gTextureList)
for (auto& image : gTextureList)
{
gTextureList.updateImageDecodePriority(image);
gTextureList.updateImageDecodePriority(image, false /*will modify gTextureList otherwise!*/);
}
}

View File

@ -904,7 +904,7 @@ void LLViewerTextureList::clearFetchingRequests()
extern bool gCubeSnapshot;
void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imagep)
void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imagep, bool flush_images)
{
if (imagep->isInDebug() || imagep->isUnremovable())
{
@ -993,7 +993,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
// Flush formatted images using a lazy flush
//
S32 num_refs = imagep->getNumRefs();
if (num_refs == min_refs)
if (num_refs == min_refs && flush_images)
{
if (imagep->getLastReferencedTimer()->getElapsedTimeF32() > lazy_flush_timeout)
{

View File

@ -148,7 +148,7 @@ public:
// - updates decode priority
// - updates desired discard level
// - cleans up textures that haven't been referenced in awhile
void updateImageDecodePriority(LLViewerFetchedTexture* imagep);
void updateImageDecodePriority(LLViewerFetchedTexture* imagep, bool flush_images = true);
private:
F32 updateImagesCreateTextures(F32 max_time);