From d2a8a3bd53f011b7137717ece39f01b5242bb45a Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Thu, 16 Mar 2023 00:04:11 +0200
Subject: SL-18964 Smoke texture can fail to load

Debt from SL-18221.
Keep init together, after we got the cap; texture should finish loading before it's needed.
---
 indra/newview/lldrawpoolalpha.cpp     | 7 +------
 indra/newview/llviewertexture.cpp     | 7 -------
 indra/newview/llviewertexturelist.cpp | 2 ++
 3 files changed, 3 insertions(+), 13 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index d4797321bb..f91069185a 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -281,12 +281,7 @@ void LLDrawPoolAlpha::renderDebugAlpha()
         gHighlightProgram.bind();
         gGL.diffuseColor4f(1, 0, 0, 1);
 
-        // SL-18964 : The creating of this texture was moved here from LLViewerTextureManager::init() to make the texture transparent before adding to cache
-        if (!LLViewerFetchedTexture::sSmokeImagep)
-        {
-            LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
-            LLViewerFetchedTexture::sSmokeImagep->setNoDelete();
-        }
+
         LLViewerFetchedTexture::sSmokeImagep->addTextureStats(1024.f * 1024.f);
         gGL.getTexUnit(0)->bindFast(LLViewerFetchedTexture::sSmokeImagep);
 
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 0d82aced23..df65fe8fb8 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -402,13 +402,6 @@ void LLViewerTextureManager::init()
 	LLViewerFetchedTexture::sDefaultImagep->dontDiscard();
 	LLViewerFetchedTexture::sDefaultImagep->setCategory(LLGLTexture::OTHER);
 
-#if 0
-	// When called first time after clearing cache this call creates (and adds to cache) an opaque texture instead of transparent
-	// SL-18964 : The creating of this texture was moved to LLDrawPoolAlpha::renderDebugAlpha()
- 	LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
-	LLViewerFetchedTexture::sSmokeImagep->setNoDelete();
-#endif
-
 	image_raw = new LLImageRaw(32,32,3);
 	data = image_raw->getData();
 
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 93ae1670c8..52e6a9a2df 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -228,6 +228,8 @@ void LLViewerTextureList::doPrefetchImages()
 
     LLViewerTextureManager::getFetchedTexture(IMG_SHOT);
     LLViewerTextureManager::getFetchedTexture(IMG_SMOKE_POOF);
+    LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
+    LLViewerFetchedTexture::sSmokeImagep->setNoDelete();
 
     LLStandardBumpmap::addstandard();
 
-- 
cgit v1.2.3