From: Miroslav Lichvar Date: Thu, 6 Jun 2013 14:28:33 +0000 (+0200) Subject: Adjust last_select_ts on slew X-Git-Tag: 1.28-pre1~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=41805d572f2fffd85472b90c4bb4bd48bcde0f1f;p=thirdparty%2Fchrony.git Adjust last_select_ts on slew --- diff --git a/sched.c b/sched.c index 321c16f6..06eed1bb 100644 --- a/sched.c +++ b/sched.c @@ -507,12 +507,11 @@ handle_slew(struct timeval *raw, void *anything) { TimerQueueEntry *ptr; + double delta; int i; if (is_step_change) { - /* We're not interested in anything else - it won't affect the - functionality of timer event dispatching. If a step change - occurs, just shift all the timeouts by the offset */ + /* If a step change occurs, just shift all raw time stamps by the offset */ for (ptr = timer_queue.next; ptr != &timer_queue; ptr = ptr->next) { UTI_AddDoubleToTimeval(&ptr->tv, -doffset, &ptr->tv); @@ -523,8 +522,9 @@ handle_slew(struct timeval *raw, } UTI_AddDoubleToTimeval(&last_select_ts_raw, -doffset, &last_select_ts_raw); - UTI_AddDoubleToTimeval(&last_select_ts, -doffset, &last_select_ts); } + + UTI_AdjustTimeval(&last_select_ts, cooked, &last_select_ts, &delta, dfreq, doffset); } /* ================================================== */