From 7bf2f9ceb37abc94065c0a2f92450db169d7ebdb Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 8 Mar 2024 09:01:59 -0500 Subject: [PATCH] MT#40962 allow for varying sleep times We may end up sleeping shorter or longer than the desired sleep time. If we ended up sleeping shorter, don't advance a tick, and if we ended up sleeping significantly longer (more than one tick), advance multiple ticks. Change-Id: I0be20104e6243c89006367430a3663cc304486b9 --- core/sip/wheeltimer.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/sip/wheeltimer.cpp b/core/sip/wheeltimer.cpp index 1512d47f..9c336183 100644 --- a/core/sip/wheeltimer.cpp +++ b/core/sip/wheeltimer.cpp @@ -88,8 +88,12 @@ void _wheeltimer::run() //printf("missed one tick\n"); //} - turn_wheel(); - next_tick += tick; + now = gettimeofday_us(); + + while (now >= next_tick) { + turn_wheel(); + next_tick += tick; + } } }