summaryrefslogtreecommitdiff
path: root/indra/llcommon/lltimer.cpp
diff options
context:
space:
mode:
authorYchebotarev ProductEngine <ychebotarev@productengine.com>2010-02-04 15:45:24 +0200
committerYchebotarev ProductEngine <ychebotarev@productengine.com>2010-02-04 15:45:24 +0200
commit0ae5368cc61f8ce95a186e6c2268b1e0a8d59c14 (patch)
tree2beb159778842156fad344e55ce8e00de397b6d2 /indra/llcommon/lltimer.cpp
parent36a44ba0e9133e78cc66f7d0b65d0890cfeb3db5 (diff)
parent56ca1aebb866b7d7e1526e31797dd7e07fcb74a8 (diff)
merge
--HG-- branch : product-engine
Diffstat (limited to 'indra/llcommon/lltimer.cpp')
-rw-r--r--indra/llcommon/lltimer.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp
index ef3e8dbc94..21e165ebc9 100644
--- a/indra/llcommon/lltimer.cpp
+++ b/indra/llcommon/lltimer.cpp
@@ -565,19 +565,23 @@ LLEventTimer::LLEventTimer(F32 period)
: mEventTimer()
{
mPeriod = period;
+ mBusy = false;
}
LLEventTimer::LLEventTimer(const LLDate& time)
: mEventTimer()
{
mPeriod = (F32)(time.secondsSinceEpoch() - LLDate::now().secondsSinceEpoch());
+ mBusy = false;
}
LLEventTimer::~LLEventTimer()
{
+ llassert(!mBusy); // 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;
@@ -587,10 +591,12 @@ void LLEventTimer::updateClass()
F32 et = timer.mEventTimer.getElapsedTimeF32();
if (timer.mEventTimer.getStarted() && et > timer.mPeriod) {
timer.mEventTimer.reset();
+ timer.mBusy = true;
if ( timer.tick() )
{
completed_timers.push_back( &timer );
}
+ timer.mBusy = false;
}
}