From fe37d350b42eca254ec4e661dfc4b46e828ad955 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Wed, 18 Aug 2010 10:46:40 -0400
Subject: [PATCH] EXT-8542 FIX (?) Avatar goes nude on teleport / outfit change

Believed fix, but having difficulty reproducing to verify.
changed logic in switching avatar textures so that we don't use the local
baked texture until we have at least the lowest LOD for each clothing texture.

Will ask Dan to help verify the fix.

Code reviewed by Seraph
---
 indra/newview/lltexlayer.cpp | 4 ++++
 indra/newview/llvoavatar.cpp | 8 ++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 1feb987682f..d8b9bc2329f 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -581,6 +581,10 @@ void LLTexLayerSetBuffer::doUpdate()
 	}
 
 	restartUpdateTimer();
+
+	// need to swtich to using this layerset if this is the first update
+	// after getting the lowest LOD
+	mTexLayerSet->getAvatar()->updateMeshTextures();
 	
 	// Print out notification that we uploaded this texture.
 	if (gSavedSettings.getBOOL("DebugAvatarRezTime"))
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 4e00355bbec..c6883380009 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6251,10 +6251,14 @@ void LLVOAvatar::updateMeshTextures()
 			// When an avatar is changing clothes and not in Appearance mode,
 			// use the last-known good baked texture until it finish the first
 			// render of the new layerset.
+
+			const BOOL layerset_invalid = !mBakedTextureDatas[i].mTexLayerSet 
+										  || !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized()
+										  || !mBakedTextureDatas[i].mTexLayerSet->isLocalTextureDataAvailable();
+
 			use_lkg_baked_layer[i] = (!is_layer_baked[i] 
 									  && (mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR) 
-									  && mBakedTextureDatas[i].mTexLayerSet 
-									  && !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized());
+									  && layerset_invalid);
 			if (use_lkg_baked_layer[i])
 			{
 				mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled(TRUE);
-- 
GitLab