diff options
author | Tofu Linden <tofu.linden@lindenlab.com> | 2010-02-06 21:38:57 +0000 |
---|---|---|
committer | Tofu Linden <tofu.linden@lindenlab.com> | 2010-02-06 21:38:57 +0000 |
commit | a4d224ff9316bf3b99e17f72f844d91e0ef80cc7 (patch) | |
tree | 4b9d374e333574104ac808e7e3b331c6bac41459 /indra/llcommon/lleventtimer.cpp | |
parent | 346cabd557d921dea4f3a122df1e4f8eec4fc9f0 (diff) |
EXT-5055 LLInstanceTracker promotes some dangerous patterns - detect them
Diffstat (limited to 'indra/llcommon/lleventtimer.cpp')
-rw-r--r-- | indra/llcommon/lleventtimer.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/indra/llcommon/lleventtimer.cpp b/indra/llcommon/lleventtimer.cpp index b2fdf11197..d44e7ec1e6 100644 --- a/indra/llcommon/lleventtimer.cpp +++ b/indra/llcommon/lleventtimer.cpp @@ -42,7 +42,6 @@ // LLEventTimer Implementation // ////////////////////////////////////////////////////////////////////////////// -bool LLEventTimer::sInTickLoop = false; LLEventTimer::LLEventTimer(F32 period) : mEventTimer() @@ -59,27 +58,28 @@ LLEventTimer::LLEventTimer(const LLDate& time) LLEventTimer::~LLEventTimer() { - llassert(!LLEventTimer::sInTickLoop); // this LLEventTimer was destroyed from within its own tick() function - bad. if you want tick() to cause destruction of its own timer, make it return true. } //static void LLEventTimer::updateClass() { std::list<LLEventTimer*> completed_timers; - LLEventTimer::sInTickLoop = true; - for (instance_iter iter = beginInstances(); iter != endInstances(); ) + { - LLEventTimer& timer = *iter++; - F32 et = timer.mEventTimer.getElapsedTimeF32(); - if (timer.mEventTimer.getStarted() && et > timer.mPeriod) { - timer.mEventTimer.reset(); - if ( timer.tick() ) - { - completed_timers.push_back( &timer ); + LLInstanceTrackerScopedGuard guard; + for (instance_iter iter = guard.beginInstances(); iter != guard.endInstances(); ) + { + LLEventTimer& timer = *iter++; + F32 et = timer.mEventTimer.getElapsedTimeF32(); + if (timer.mEventTimer.getStarted() && et > timer.mPeriod) { + timer.mEventTimer.reset(); + if ( timer.tick() ) + { + completed_timers.push_back( &timer ); + } } } } - LLEventTimer::sInTickLoop = false; if ( completed_timers.size() > 0 ) { |