SH-3635 WIP

meow-7.2.2
Brad Payne (Vir Linden) 2013-05-31 13:54:32 -04:00
parent faaf8ba5c7
commit 9552f733ef
7 changed files with 51 additions and 37 deletions

View File

@ -397,6 +397,12 @@ public:
LLCallAfterInventoryBatchMgr(dst_cat_id, phase_name, on_completion_func, on_failure_func, retry_after, max_retries)
{
addItems(src_items);
sInstanceCount++;
}
~LLCallAfterInventoryCopyMgr()
{
sInstanceCount--;
}
virtual bool requestOperation(const LLUUID& item_id)
@ -419,8 +425,15 @@ public:
);
return true;
}
static S32 getInstanceCount() { return sInstanceCount; }
private:
static S32 sInstanceCount;
};
S32 LLCallAfterInventoryCopyMgr::sInstanceCount = 0;
LLUpdateAppearanceOnDestroy::LLUpdateAppearanceOnDestroy(bool update_base_outfit_ordering,
bool enforce_item_restrictions,
bool enforce_ordering):
@ -2154,6 +2167,11 @@ void LLAppearanceMgr::wearInventoryCategory(LLInventoryCategory* category, bool
category->getUUID(), copy, append));
}
S32 LLAppearanceMgr::getActiveCopyOperations() const
{
return LLCallAfterInventoryCopyMgr::getInstanceCount();
}
void LLAppearanceMgr::wearCategoryFinal(LLUUID& cat_id, bool copy_items, bool append)
{
LL_INFOS("Avatar") << self_av_string() << "starting" << LL_ENDL;

View File

@ -71,6 +71,8 @@ public:
LLInventoryModel::item_array_t& items_to_kill);
void enforceCOFItemRestrictions(LLPointer<LLInventoryCallback> cb);
S32 getActiveCopyOperations() const;
// Copy all items and the src category itself.
void shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id,
LLPointer<LLInventoryCallback> cb);

View File

@ -1877,7 +1877,7 @@ std::string LLViewerRegion::getCapability(const std::string& name) const
{
if (!capabilitiesReceived() && (name!=std::string("Seed")) && (name!=std::string("ObjectMedia")))
{
llwarns << "getCapability called before caps received" << llendl;
llwarns << "getCapability called before caps received for " << name << llendl;
}
CapabilityMap::const_iterator iter = mImpl->mCapabilities.find(name);

View File

@ -734,44 +734,28 @@ void send_stats()
LLHTTPClient::post(url, body, new ViewerStatsResponder());
}
LLFrameTimer& LLViewerStats::PhaseMap::getPhaseTimer(const std::string& phase_name)
LLTimer& LLViewerStats::PhaseMap::getPhaseTimer(const std::string& phase_name)
{
phase_map_t::iterator iter = mPhaseMap.find(phase_name);
if (iter == mPhaseMap.end())
{
LLFrameTimer timer;
LLTimer timer;
mPhaseMap[phase_name] = timer;
}
LLFrameTimer& timer = mPhaseMap[phase_name];
LLTimer& timer = mPhaseMap[phase_name];
return timer;
}
void LLViewerStats::PhaseMap::startPhase(const std::string& phase_name)
{
LLFrameTimer& timer = getPhaseTimer(phase_name);
lldebugs << "startPhase " << phase_name << llendl;
timer.unpause();
}
void LLViewerStats::PhaseMap::stopAllPhases()
{
for (phase_map_t::iterator iter = mPhaseMap.begin();
iter != mPhaseMap.end(); ++iter)
{
const std::string& phase_name = iter->first;
if (iter->second.getStarted())
{
// Going from started to paused state - record stats.
recordPhaseStat(phase_name,iter->second.getElapsedTimeF32());
}
lldebugs << "stopPhase (all) " << phase_name << llendl;
iter->second.pause();
}
LLTimer& timer = getPhaseTimer(phase_name);
timer.start();
LL_DEBUGS("Avatar") << "startPhase " << phase_name << llendl;
}
void LLViewerStats::PhaseMap::clearPhases()
{
lldebugs << "clearPhases" << llendl;
LL_DEBUGS("Avatar") << "clearPhases" << llendl;
mPhaseMap.clear();
}
@ -796,7 +780,6 @@ LLViewerStats::PhaseMap::PhaseMap()
{
}
void LLViewerStats::PhaseMap::stopPhase(const std::string& phase_name)
{
phase_map_t::iterator iter = mPhaseMap.find(phase_name);
@ -809,6 +792,7 @@ void LLViewerStats::PhaseMap::stopPhase(const std::string& phase_name)
}
}
}
// static
LLViewerStats::StatsAccumulator& LLViewerStats::PhaseMap::getPhaseStats(const std::string& phase_name)
{
@ -832,14 +816,18 @@ void LLViewerStats::PhaseMap::recordPhaseStat(const std::string& phase_name, F32
bool LLViewerStats::PhaseMap::getPhaseValues(const std::string& phase_name, F32& elapsed, bool& completed)
{
phase_map_t::iterator iter = mPhaseMap.find(phase_name);
bool found = false;
if (iter != mPhaseMap.end())
{
found = true;
elapsed = iter->second.getElapsedTimeF32();
completed = !iter->second.getStarted();
return true;
LL_DEBUGS("Avatar") << " phase_name " << phase_name << " elapsed " << elapsed << " completed " << completed << " timer addr " << (S32)(&iter->second) << llendl;
}
else
{
return false;
LL_DEBUGS("Avatar") << " phase_name " << phase_name << " NOT FOUND" << llendl;
}
return found;
}

View File

@ -279,7 +279,7 @@ public:
// Phase tracking (originally put in for avatar rezzing), tracking
// progress of active/completed phases for activities like outfit changing.
typedef std::map<std::string,LLFrameTimer> phase_map_t;
typedef std::map<std::string,LLTimer> phase_map_t;
typedef std::map<std::string,StatsAccumulator> phase_stats_t;
class PhaseMap
{
@ -288,11 +288,10 @@ public:
static phase_stats_t sStats;
public:
PhaseMap();
LLFrameTimer& getPhaseTimer(const std::string& phase_name);
LLTimer& getPhaseTimer(const std::string& phase_name);
bool getPhaseValues(const std::string& phase_name, F32& elapsed, bool& completed);
void startPhase(const std::string& phase_name);
void stopPhase(const std::string& phase_name);
void stopAllPhases();
void clearPhases();
LLSD dumpPhases();
static StatsAccumulator& getPhaseStats(const std::string& phase_name);

View File

@ -6013,9 +6013,12 @@ void LLVOAvatar::clearPhases()
void LLVOAvatar::startPhase(const std::string& phase_name)
{
F32 elapsed;
bool completed;
if (getPhases().getPhaseValues(phase_name, elapsed, completed))
F32 elapsed = 0.0;
bool completed = false;
bool found = getPhases().getPhaseValues(phase_name, elapsed, completed);
//LL_DEBUGS("Avatar") << avString() << " phase state " << phase_name
// << " found " << found << " elapsed " << elapsed << " completed " << completed << llendl;
if (found)
{
if (!completed)
{
@ -6029,9 +6032,12 @@ void LLVOAvatar::startPhase(const std::string& phase_name)
void LLVOAvatar::stopPhase(const std::string& phase_name, bool err_check)
{
F32 elapsed;
bool completed;
if (getPhases().getPhaseValues(phase_name, elapsed, completed))
F32 elapsed = 0.0;
bool completed = false;
bool found = getPhases().getPhaseValues(phase_name, elapsed, completed);
//LL_DEBUGS("Avatar") << avString() << " phase state " << phase_name
// << " found " << found << " elapsed " << elapsed << " completed " << completed << llendl;
if (found)
{
if (!completed)
{

View File

@ -246,6 +246,8 @@ bool LLVOAvatarSelf::checkStuckAppearance()
LL_DEBUGS("Avatar") << "change in progress for " << change_time << " seconds" << llendl;
S32 active_hp = LLAppearanceMgr::instance().countActiveHoldingPatterns();
LL_DEBUGS("Avatar") << "active holding patterns " << active_hp << " seconds" << llendl;
S32 active_copies = LLAppearanceMgr::instance().getActiveCopyOperations();
LL_DEBUGS("Avatar") << "active copy operations " << active_copies << llendl;
}
// Return false to continue running check periodically.
@ -2369,7 +2371,6 @@ LLSD summarize_by_buckets(std::vector<LLSD> in_records,
void LLVOAvatarSelf::sendViewerAppearanceChangeMetrics()
{
// gAgentAvatarp->stopAllPhases();
static volatile bool reporting_started(false);
static volatile S32 report_sequence(0);