From 6cdb09ddb546e1227a13fe03810ef21ce5829237 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 27 Apr 2009 14:14:42 +0000 Subject: [PATCH] auto-sync idle timers git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13161 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_time.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/switch_time.c b/src/switch_time.c index d20f9a293e..8897b1007b 100644 --- a/src/switch_time.c +++ b/src/switch_time.c @@ -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) {