Moved some logic into LLWearableHoldingPattern

meow-7.2.2
Brad Payne (Vir Linden) 2010-03-19 17:15:41 -04:00
parent 7792a53b28
commit f428d62c93
1 changed files with 16 additions and 14 deletions

View File

@ -368,6 +368,7 @@ public:
void recoverMissingWearable(EWearableType type);
void clearCOFLinksForMissingWearables();
void onWearableAssetFetch(LLWearable *wearable);
void onAllComplete();
typedef std::list<LLFoundData> found_list_t;
@ -657,11 +658,10 @@ bool LLWearableHoldingPattern::pollMissingWearables()
return done;
}
static void onWearableAssetFetch(LLWearable* wearable, void* data)
void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)
{
LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data;
holder->mResolved += 1; // just counting callbacks, not successes.
llinfos << "onWearableAssetFetch, resolved count " << holder->mResolved << " of requested " << holder->mFoundList.size() << llendl;
mResolved += 1; // just counting callbacks, not successes.
llinfos << "onWearableAssetFetch, resolved count " << mResolved << " of requested " << mFoundList.size() << llendl;
if (wearable)
{
llinfos << "wearable found, type " << wearable->getType() << " asset " << wearable->getAssetID() << llendl;
@ -671,7 +671,7 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)
llwarns << "no wearable found" << llendl;
}
if (holder->mFired)
if (mFired)
{
llwarns << "called after holder fired" << llendl;
return;
@ -682,8 +682,8 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)
return;
}
for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin();
iter != holder->mFoundList.end(); ++iter)
for (LLWearableHoldingPattern::found_list_t::iterator iter = mFoundList.begin();
iter != mFoundList.end(); ++iter)
{
LLFoundData& data = *iter;
if(wearable->getAssetID() == data.mAssetID)
@ -696,6 +696,12 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)
}
}
static void onWearableAssetFetch(LLWearable* wearable, void* data)
{
LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data;
holder->onWearableAssetFetch(wearable);
}
static void removeDuplicateItems(LLInventoryModel::item_array_t& items)
{
@ -1186,9 +1192,6 @@ void LLAppearanceManager::updateAppearanceFromCOF()
// callback will be called (and this object deleted)
// before the final getNextData().
// BAP 2.1 cleanup - no point having found_container when
// mFoundList already has all the info.
LLDynamicArray<LLFoundData> found_container;
for(S32 i = 0; i < wear_items.count(); ++i)
{
LLViewerInventoryItem *item = wear_items.get(i);
@ -1214,7 +1217,6 @@ void LLAppearanceManager::updateAppearanceFromCOF()
#endif
holder->mFoundList.push_front(found);
found_container.put(found);
}
else
{
@ -1229,9 +1231,10 @@ void LLAppearanceManager::updateAppearanceFromCOF()
}
}
for(S32 i = 0; i < found_container.count(); ++i)
for (LLWearableHoldingPattern::found_list_t::iterator it = holder->mFoundList.begin();
it != holder->mFoundList.end(); ++it)
{
LLFoundData& found = found_container.get(i);
LLFoundData& found = *it;
llinfos << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl;
@ -1248,7 +1251,6 @@ void LLAppearanceManager::updateAppearanceFromCOF()
{
doOnIdleRepeating(boost::bind(&LLWearableHoldingPattern::pollFetchCompletion,holder));
}
}
void LLAppearanceManager::getDescendentsOfAssetType(const LLUUID& category,