Skip to content
Snippets Groups Projects
Commit a9871e8d authored by Brad Payne (Vir Linden)'s avatar Brad Payne (Vir Linden)
Browse files

For EXT-4222: Switching outfits sometimes causes me to wear both, and show previous outfit as worn.

parent 40b6cb75
No related branches found
No related tags found
No related merge requests found
...@@ -301,6 +301,7 @@ class LLWearableHoldingPattern ...@@ -301,6 +301,7 @@ class LLWearableHoldingPattern
bool pollCompletion(); bool pollCompletion();
bool isDone(); bool isDone();
bool isTimedOut();
typedef std::list<LLFoundData> found_list_t; typedef std::list<LLFoundData> found_list_t;
found_list_t mFoundList; found_list_t mFoundList;
...@@ -313,12 +314,10 @@ class LLWearableHoldingPattern ...@@ -313,12 +314,10 @@ class LLWearableHoldingPattern
LLWearableHoldingPattern::LLWearableHoldingPattern(): LLWearableHoldingPattern::LLWearableHoldingPattern():
mResolved(0) mResolved(0)
{ {
llwarns << "constructor" << llendl;
} }
LLWearableHoldingPattern::~LLWearableHoldingPattern() LLWearableHoldingPattern::~LLWearableHoldingPattern()
{ {
llwarns << "destructor" << llendl;
} }
bool LLWearableHoldingPattern::isDone() bool LLWearableHoldingPattern::isDone()
...@@ -326,10 +325,16 @@ bool LLWearableHoldingPattern::isDone() ...@@ -326,10 +325,16 @@ bool LLWearableHoldingPattern::isDone()
return (mResolved >= (S32)mFoundList.size()); return (mResolved >= (S32)mFoundList.size());
} }
bool LLWearableHoldingPattern::isTimedOut()
{
static F32 max_wait_time = 5.0; // give up if wearable fetches haven't completed in max_wait_time seconds.
return mWaitTime.getElapsedTimeF32() > max_wait_time;
}
bool LLWearableHoldingPattern::pollCompletion() bool LLWearableHoldingPattern::pollCompletion()
{ {
bool done = isDone(); bool done = isDone();
llwarns << "polling, done status: " << done << llendl; llinfos << "polling, done status: " << done << llendl;
if (done) if (done)
{ {
// Activate all gestures in this folder // Activate all gestures in this folder
...@@ -350,6 +355,10 @@ bool LLWearableHoldingPattern::pollCompletion() ...@@ -350,6 +355,10 @@ bool LLWearableHoldingPattern::pollCompletion()
gInventory.notifyObservers(); gInventory.notifyObservers();
} }
} }
// Update wearables.
llinfos << "Updating agent wearables with " << mResolved << " wearable items " << llendl;
LLAppearanceManager::instance().updateAgentWearables(this, false);
// Update attachments to match those requested. // Update attachments to match those requested.
LLVOAvatar* avatar = gAgent.getAvatarObject(); LLVOAvatar* avatar = gAgent.getAvatarObject();
...@@ -359,13 +368,17 @@ bool LLWearableHoldingPattern::pollCompletion() ...@@ -359,13 +368,17 @@ bool LLWearableHoldingPattern::pollCompletion()
LLAgentWearables::userUpdateAttachments(mObjItems); LLAgentWearables::userUpdateAttachments(mObjItems);
} }
// Update wearables.
llinfos << "Updating agent wearables with " << mResolved << " wearable items " << llendl;
LLAppearanceManager::instance().updateAgentWearables(this, false);
delete this; delete this;
return done;
}
else if (isTimedOut())
{
llwarns << "wearables taking too long to fetch for outfit, retrying updateAppearanceFromCOF()." << llendl;
delete this;
LLAppearanceManager::instance().updateAppearanceFromCOF();
return true;
} }
return done; return false;
} }
static void removeDuplicateItems(LLInventoryModel::item_array_t& items) static void removeDuplicateItems(LLInventoryModel::item_array_t& items)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment