summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNyx (Neal Orman) <nyx@lindenlab.com>2012-04-02 11:21:52 -0400
committerNyx (Neal Orman) <nyx@lindenlab.com>2012-04-02 11:21:52 -0400
commit6a7582c09d5533cab09ca07da301d9c987b422f5 (patch)
treeee93ff0976bb74fa89f77da4265430222e49c4d2
parent1731894cb42fdbf0bb5bd2e96fe20e2252d1026f (diff)
SH-3041 FIX use server-sent baked texture IDs while waiting for avatar to load
Prevents the avatar's baked texture UUIDs sent by the server's first objectUpdate message from being overwritten until the wearable cache results come back.
-rw-r--r--indra/newview/llagent.cpp3
-rw-r--r--indra/newview/llagentwearables.cpp11
-rwxr-xr-xindra/newview/llvoavatarself.cpp2
3 files changed, 13 insertions, 3 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 8aba2e76a2..83761ea18f 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -3310,13 +3310,12 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
else
{
// no cache of this bake. request upload.
- gAgentAvatarp->requestLayerSetUpload(baked_index);
+ gAgentAvatarp->invalidateComposite(gAgentAvatarp->getLayerSet(baked_index),TRUE);
}
}
}
}
}
-
llinfos << "Received cached texture response for " << num_results << " textures." << llendl;
gAgentAvatarp->outputRezTiming("Fetched agent wearables textures from cache. Will now load them");
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index bd418ca2b3..5c302766c4 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1447,7 +1447,16 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
{
gAgentAvatarp->setCompositeUpdatesEnabled(TRUE);
gAgentAvatarp->updateVisualParams();
- gAgentAvatarp->invalidateAll();
+
+ // If we have not yet declouded, we may want to use
+ // baked texture UUIDs sent from the first objectUpdate message
+ // don't overwrite these. If we have already declouded, we've saved
+ // these ids as the last known good textures and can invalidate without
+ // re-clouding.
+ if (!gAgentAvatarp->getIsCloud())
+ {
+ gAgentAvatarp->invalidateAll();
+ }
}
// Start rendering & update the server
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index f73c8b59aa..02efda913e 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -822,6 +822,8 @@ U32 LLVOAvatarSelf::processUpdateMessage(LLMessageSystem *mesgsys,
mInitialBakeIDs[i] = texture_id;
}
+ onFirstTEMessageReceived();
+
mInitialBakesLoaded = true;
}