Perform minute alignment for refreshes only once per minute
Patch status: rejected
Patch by Marco Hunsicker
Long description:
This patch ensures that the minute alignment for refreshes is only done once per minute to make sure that the refresh interval time is obeyed as much as possible after a refresh has been forced from the outside. This also reduces the total number of refreshs in such cases.
To apply this patch, use:
curl http://cr.i3wm.org/patch/465/raw.patch | git am
b/i3status.c
| 18 |
@@ -677,7 +677,12 @@ int main(int argc, char *argv[]) {
|
| 19 |
* that we start with :00 on every new minute. */ |
| 20 |
struct timeval current_timeval; |
| 21 |
gettimeofday(¤t_timeval, NULL); |
| 22 |
- struct timespec ts = {interval - 1 - (current_timeval.tv_sec % interval), (10e5 - current_timeval.tv_usec) * 1000};
|
| 23 |
+ /* how many seconds until the next full minute? */ |
| 24 |
+ int gap = 60 - (current_timeval.tv_sec % 60); |
| 25 |
+ struct timespec ts = {
|
| 26 |
+ interval - 1 - (interval >= gap ? current_timeval.tv_sec % interval : 0), |
| 27 |
+ (10e5 - current_timeval.tv_usec) * 1000 |
| 28 |
+ }; |
| 29 |
nanosleep(&ts, NULL); |
| 30 |
} |
| 31 |
} |