diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index a23ef4efa3..f27c2ec0eb 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -312,6 +312,13 @@ SWITCH_STANDARD_API(timer_test_function) goto end; } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Timer Test: samplecount after init: %d\n", timer.samplecount); + + /* Step timer once before testing results below, to get first timestamp as accurate as possible */ + switch_core_timer_next(&timer); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Timer Test: samplecount after first step: %d\n", timer.samplecount); + start = switch_time_ref(); for (x = 1; x <= max; x++) { then = switch_time_ref(); diff --git a/src/switch_time.c b/src/switch_time.c index 7ffdf4e4d7..8465e5dcc0 100644 --- a/src/switch_time.c +++ b/src/switch_time.c @@ -485,6 +485,7 @@ static switch_status_t timer_init(switch_timer_t *timer) switch_mutex_unlock(globals.mutex); timer->private_info = private_info; private_info->start = private_info->reference = TIMER_MATRIX[timer->interval].tick; + private_info->start -= 2; /* switch_core_timer_init sets samplecount to samples, this makes first next() step once */ private_info->roll = TIMER_MATRIX[timer->interval].roll; private_info->ready = 1;