From 587b8e737d30d58976ef942a34dd4ef851764291 Mon Sep 17 00:00:00 2001 From: "Nyx (Neal Orman)" Date: Wed, 17 Feb 2010 11:50:13 -0500 Subject: 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 68ee9cd612..f4bc35002b 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 ddb6405c41..662e6dcabe 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); -- cgit v1.2.3