summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorRichard Linden <none@none>2012-08-30 18:35:29 -0700
committerRichard Linden <none@none>2012-08-30 18:35:29 -0700
commitafc2807302f2a94b5cbb0fe86f304984ac7e50b8 (patch)
treefe3984d5de892c7a1bf726d32f45dbaeeebf7397 /indra
parent5a03b8282da64433c2525f0950e8fb86995f66dc (diff)
MAINT-1486 FIX Crash on login (Unhandled exception)
cleaner implementation of llfasttimers...don't bother to share similarly named timers just create multiple timers with same name...doesn't break anything
Diffstat (limited to 'indra')
-rw-r--r--indra/llcommon/llfasttimer.cpp10
-rw-r--r--indra/llcommon/llfasttimer.h1
-rw-r--r--indra/newview/llfasttimerview.cpp2
3 files changed, 5 insertions, 8 deletions
diff --git a/indra/llcommon/llfasttimer.cpp b/indra/llcommon/llfasttimer.cpp
index ff6806082c..d54e1a93ea 100644
--- a/indra/llcommon/llfasttimer.cpp
+++ b/indra/llcommon/llfasttimer.cpp
@@ -128,13 +128,6 @@ public:
LLFastTimer::NamedTimer& createNamedTimer(const std::string& name, LLFastTimer::FrameState* state)
{
- timer_map_t::iterator found_it = mTimers.find(name);
- if (found_it != mTimers.end())
- {
- llerrs << "Duplicate timer declaration for: " << name << llendl;
- return *found_it->second;
- }
-
LLFastTimer::NamedTimer* timer = new LLFastTimer::NamedTimer(name);
timer->setFrameState(state);
timer->setParent(mTimerRoot);
@@ -155,7 +148,7 @@ public:
LLFastTimer::NamedTimer* getRootTimer() { return mTimerRoot; }
- typedef std::map<std::string, LLFastTimer::NamedTimer*> timer_map_t;
+ typedef std::multimap<std::string, LLFastTimer::NamedTimer*> timer_map_t;
timer_map_t::iterator beginTimers() { return mTimers.begin(); }
timer_map_t::iterator endTimers() { return mTimers.end(); }
S32 timerCount() { return mTimers.size(); }
@@ -294,6 +287,7 @@ S32 LLFastTimer::NamedTimer::getDepth()
while(timerp)
{
depth++;
+ if (timerp->getParent() == timerp) break;
timerp = timerp->mParent;
}
return depth;
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index e42e549df5..b3f7304664 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -145,6 +145,7 @@ public:
DeclareTimer(const std::string& name);
NamedTimer& getNamedTimer() { return mTimer; }
+ const NamedTimer& getNamedTimer() const { return mTimer; }
private:
FrameState mFrameState;
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 59bf70f488..4dfb93f1bc 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -514,6 +514,7 @@ void LLFastTimerView::draw()
while(!is_child_of_hover_item && next_parent)
{
is_child_of_hover_item = (mHoverID == next_parent);
+ if (next_parent->getParent() == next_parent) break;
next_parent = next_parent->getParent();
}
@@ -781,6 +782,7 @@ void LLFastTimerView::draw()
while(!is_child_of_hover_item && next_parent)
{
is_child_of_hover_item = (mHoverID == next_parent);
+ if (next_parent->getParent() == next_parent) break;
next_parent = next_parent->getParent();
}