diff options
author | Gereon Kremer <gereon.kremer@rwth-aachen.de> | 2013-01-05 12:47:02 +0100 |
---|---|---|
committer | Michael Stapelberg <michael@stapelberg.de> | 2013-01-08 22:02:03 +0100 |
commit | 11757b8105ebebba40c3a94c5d6c5431cc58b3d1 (patch) | |
tree | 390608f8a2e50f8b06dfd193686c46b380e5a57f | |
parent | 6147e2b268fd1ffc858453f833f443b8778bc986 (diff) |
make refreshs align with minutes
-rw-r--r-- | i3status.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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); } } |