From e5d05baba3bc01003dd7ca98565cfbba882c6699 Mon Sep 17 00:00:00 2001 From: "Rene D. Obermueller" Date: Thu, 31 Mar 2022 08:35:14 +0200 Subject: [PATCH] Issue 1226/1497: Replace sleep_until with sleep_for to prevent clock from getting stuck with system time adjustment --- src/modules/clock.cpp | 5 +---- src/modules/simpleclock.cpp | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/modules/clock.cpp b/src/modules/clock.cpp index bb4da21..e99017f 100644 --- a/src/modules/clock.cpp +++ b/src/modules/clock.cpp @@ -74,10 +74,7 @@ waybar::modules::Clock::Clock(const std::string& id, const Json::Value& config) thread_ = [this] { dp.emit(); - auto now = std::chrono::system_clock::now(); - auto timeout = std::chrono::floor(now + interval_); - auto diff = std::chrono::seconds(timeout.time_since_epoch().count() % interval_.count()); - thread_.sleep_until(timeout - diff); + thread_.sleep_for(interval_); }; } diff --git a/src/modules/simpleclock.cpp b/src/modules/simpleclock.cpp index f4a4ec4..5abc1de 100644 --- a/src/modules/simpleclock.cpp +++ b/src/modules/simpleclock.cpp @@ -6,10 +6,7 @@ waybar::modules::Clock::Clock(const std::string& id, const Json::Value& config) : ALabel(config, "clock", id, "{:%H:%M}", 60) { thread_ = [this] { dp.emit(); - auto now = std::chrono::system_clock::now(); - auto timeout = std::chrono::floor(now + interval_); - auto diff = std::chrono::seconds(timeout.time_since_epoch().count() % interval_.count()); - thread_.sleep_until(timeout - diff); + thread_.sleep_for(interval_); }; }