From 587b8e737d30d58976ef942a34dd4ef851764291 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Wed, 17 Feb 2010 11:50:13 -0500
Subject: [PATCH] EXT-5364 New users appear fully naked before resolving.

We were pushing off redrawing your local texture composite
while waiting for a baked texture cache response from the server.
If this happens when your textures come in, your avatar will de-cloud
but the composite will not update, resulting in nudity.

Changed the logic so we will re-generate a local composite even if
we have a pending baked texture query (we still suppress uploading the
composite until a response is received). Verified several times that this does
fix the issue. Will update the JIRA with reliable repro.

Q verified issue is worthy of a hotfix checkin

Code has been reviewed by vir, bigpapi, and seraph

This is necessary for new user experience. Patch should be contained enough to be low-risk. Contact Nyx if any further questions.
---
 indra/newview/llagentwearables.cpp | 1 +
 indra/newview/lltexlayer.cpp       | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 68ee9cd6126..f4bc35002bf 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1673,6 +1673,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 	if (mAvatarObject)
 	{
 		mAvatarObject->updateVisualParams();
+		mAvatarObject->invalidateAll();
 	}
 
 	// Start rendering & update the server
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index ddb6405c412..662e6dcabe9 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -167,8 +167,8 @@ void LLTexLayerSetBuffer::popProjection() const
 BOOL LLTexLayerSetBuffer::needsRender()
 {
 	const LLVOAvatarSelf* avatar = mTexLayerSet->getAvatar();
-	BOOL upload_now = mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal();
-	BOOL needs_update = gAgentQueryManager.hasNoPendingQueries() && (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating;
+	BOOL upload_now = mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal() && gAgentQueryManager.hasNoPendingQueries();
+	BOOL needs_update = (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating;
 	if (needs_update)
 	{
 		BOOL invalid_skirt = avatar->getBakedTE(mTexLayerSet) == LLVOAvatarDefines::TEX_SKIRT_BAKED && !avatar->isWearingWearableType(WT_SKIRT);
-- 
GitLab