diff --git a/dwmblocks.c b/dwmblocks.c index f18a2af..29cf63e 100644 --- a/dwmblocks.c +++ b/dwmblocks.c @@ -203,19 +203,23 @@ statusloop() getcmd(block, NILL); setroot(); sigprocmask(SIG_UNBLOCK, &blocksigmask, NULL); + t.tv_sec = INTERVALs, t.tv_nsec = INTERVALn; + while (nanosleep(&t, &t) == -1) + if (errno != EINTR) { + perror("statusloop - nanosleep"); + exit(1); + } + i = 1; /* main loop */ - for (i = 1;; t.tv_sec = INTERVALs, t.tv_nsec = INTERVALn, i += 1) { - while (nanosleep(&t, &t) == -1) - if (errno != EINTR) { - perror("statusloop - nanosleep"); - exit(1); - } + for (;; i++) { sigprocmask(SIG_BLOCK, &blocksigmask, NULL); for (Block *block = blocks; block->pathu; block++) if (block->interval > 0 && i % block->interval == 0) getcmd(block, NILL); setroot(); sigprocmask(SIG_UNBLOCK, &blocksigmask, NULL); + t.tv_sec = INTERVALs, t.tv_nsec = INTERVALn; + while (nanosleep(&t, &t) == -1); } }