diff options
Diffstat (limited to 'src/timers.cpp')
-rw-r--r-- | src/timers.cpp | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/timers.cpp b/src/timers.cpp index 02e5a3f08..d7c56072b 100644 --- a/src/timers.cpp +++ b/src/timers.cpp @@ -99,8 +99,24 @@ void TimerManager::DelTimer(Timer *T) } } +/** Check if something is a timer + * @param T A pointer + * @return true or false + */ +bool TimerManager::IsTimer(Timer *T) +{ + std::vector<Timer *>::iterator i = std::find(Timers.begin(), Timers.end(), T); + + if (i != Timers.end()) + { + return true; + } + + return false; +} + /** Tick all pending timers - * @param time The current time + * @param ctime The current time */ void TimerManager::TickTimers(time_t ctime) { @@ -110,20 +126,17 @@ void TimerManager::TickTimers(time_t ctime) while ((Timers.size()) && (ctime > (*Timers.begin())->GetTimer())) { i = Timers.begin(); - t = *i; t->Tick(ctime); - Timers.erase(i); - if (t->GetRepeat()) { t->SetTimer(ctime + t->GetSecs()); - AddTimer(t); + sort(Timers.begin(), Timers.end(), TimerManager::TimerComparison); } else - delete t; + TimerManager::DelTimer(t); } } |