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
bool pollCompletion();
bool isDone();
bool isTimedOut();
typedef std::list<LLFoundData> found_list_t;
found_list_t mFoundList;
......@@ -313,12 +314,10 @@ class LLWearableHoldingPattern
LLWearableHoldingPattern::LLWearableHoldingPattern():
mResolved(0)
{
llwarns << "constructor" << llendl;
}
LLWearableHoldingPattern::~LLWearableHoldingPattern()
{
llwarns << "destructor" << llendl;
}
bool LLWearableHoldingPattern::isDone()
......@@ -326,10 +325,16 @@ bool LLWearableHoldingPattern::isDone()
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 done = isDone();
llwarns << "polling, done status: " << done << llendl;
llinfos << "polling, done status: " << done << llendl;
if (done)
{
// Activate all gestures in this folder
......@@ -350,6 +355,10 @@ bool LLWearableHoldingPattern::pollCompletion()
gInventory.notifyObservers();
}
}
// Update wearables.
llinfos << "Updating agent wearables with " << mResolved << " wearable items " << llendl;
LLAppearanceManager::instance().updateAgentWearables(this, false);
// Update attachments to match those requested.
LLVOAvatar* avatar = gAgent.getAvatarObject();
......@@ -359,13 +368,17 @@ bool LLWearableHoldingPattern::pollCompletion()
LLAgentWearables::userUpdateAttachments(mObjItems);
}
// Update wearables.
llinfos << "Updating agent wearables with " << mResolved << " wearable items " << llendl;
LLAppearanceManager::instance().updateAgentWearables(this, false);
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)
......
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