auto-sync idle timers

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13161 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Anthony Minessale 2009-04-27 14:14:42 +00:00
parent b27dbfd24c
commit 6cdb09ddb5
1 changed files with 5 additions and 0 deletions

View File

@ -324,7 +324,12 @@ static switch_status_t timer_next(switch_timer_t *timer)
#else
int cond_index = 1;
#endif
int delta = (int)(private_info->reference - TIMER_MATRIX[timer->interval].tick);
/* sync up timer if it's not been called for a while otherwise it will return instantly several times until it catches up */
if (delta < 0) {
private_info->reference = timer->tick = TIMER_MATRIX[timer->interval].tick;
}
timer_step(timer);
while (globals.RUNNING == 1 && private_info->ready && TIMER_MATRIX[timer->interval].tick < private_info->reference) {