From 11757b8105ebebba40c3a94c5d6c5431cc58b3d1 Mon Sep 17 00:00:00 2001 From: Gereon Kremer Date: Sat, 5 Jan 2013 12:47:02 +0100 Subject: [PATCH] make refreshs align with minutes --- i3status.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/i3status.c b/i3status.c index 87a793b..af62a7c 100644 --- a/i3status.c +++ b/i3status.c @@ -515,10 +515,11 @@ int main(int argc, char *argv[]) { /* To provide updates on every full second (as good as possible) * we don’t use sleep(interval) but we sleep until the next * second (with microsecond precision) plus (interval-1) - * seconds. */ + * seconds. We also align to 60 seconds modulo interval such + * that we start with :00 on every new minute. */ struct timeval current_timeval; gettimeofday(¤t_timeval, NULL); - struct timespec ts = {interval - 1, (10e5 - current_timeval.tv_usec) * 1000}; + struct timespec ts = {interval - 1 - (current_timeval.tv_sec % interval), (10e5 - current_timeval.tv_usec) * 1000}; nanosleep(&ts, NULL); } }