From cedca7b8b843413217b399ea1323c727994237ce Mon Sep 17 00:00:00 2001 From: clsr Date: Thu, 9 Aug 2018 18:18:44 +0200 Subject: Add exact sleep --- dwmclock.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'dwmclock.c') diff --git a/dwmclock.c b/dwmclock.c index e7fd938..b409555 100644 --- a/dwmclock.c +++ b/dwmclock.c @@ -62,6 +62,9 @@ void handler(int sig) int main(void) { +#ifdef EXACT_SLEEP + struct timespec ts; +#endif /* EXACT_SLEEP */ struct tm *tm; time_t now; #ifdef BATTERY @@ -128,13 +131,25 @@ int main(void) perc[7] = ' '; #endif /* BATTERY */ +#ifdef EXACT_SLEEP + clock_gettime(CLOCK_REALTIME, &ts); + now = ts.tv_sec; +#else now = time(NULL); +#endif /* EXACT_SLEEP */ tm = localtime(&now); strftime(clock, 9, "%H:%M:%S", tm); XStoreName(disp, root, name); XFlush(disp); + +#ifdef EXACT_SLEEP + ts.tv_sec = 0; + ts.tv_nsec = 1000000000 - ts.tv_nsec; + nanosleep(&ts, NULL); +#else sleep(1); +#endif /* EXACT_SLEEP */ } XCloseDisplay(disp); -- cgit