aboutsummaryrefslogtreecommitdiff
path: root/include/cru/base/Timer.h
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-11-06 17:31:17 +0800
committerYuqian Yang <crupest@crupest.life>2025-11-06 17:31:17 +0800
commita458ef365e3ace2e51e1bf0c2edefa5d02d032a8 (patch)
tree18fca7e8c9e3e716a472b31a23d28b5424f46d7c /include/cru/base/Timer.h
parent6315e654ce0be2d2cc148e9ff80f611ac1176348 (diff)
downloadcru-a458ef365e3ace2e51e1bf0c2edefa5d02d032a8.tar.gz
cru-a458ef365e3ace2e51e1bf0c2edefa5d02d032a8.tar.bz2
cru-a458ef365e3ace2e51e1bf0c2edefa5d02d032a8.zip
Fix 0ms timer.
Diffstat (limited to 'include/cru/base/Timer.h')
-rw-r--r--include/cru/base/Timer.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/include/cru/base/Timer.h b/include/cru/base/Timer.h
index 955296b7..5508bccf 100644
--- a/include/cru/base/Timer.h
+++ b/include/cru/base/Timer.h
@@ -32,13 +32,17 @@ class TimerRegistry : public Object {
std::chrono::milliseconds NextTimeout(
std::chrono::steady_clock::time_point now) const {
- return std::chrono::duration_cast<std::chrono::milliseconds>(
- interval - (now - created) % interval);
+ return interval == std::chrono::milliseconds::zero()
+ ? std::chrono::milliseconds::zero()
+ : std::chrono::duration_cast<std::chrono::milliseconds>(
+ interval - (now - created) % interval);
}
bool Update(std::chrono::steady_clock::time_point now) {
auto next_trigger =
- last_check - (last_check - created) % interval + interval;
+ interval == std::chrono::milliseconds::zero()
+ ? last_check
+ : last_check - (last_check - created) % interval + interval;
if (now >= next_trigger) {
last_check = next_trigger;
return true;