Waiting to retrieve info is not very scalable

Signed-off-by: Kurt Van Dijck <dev.k...@vandijck-laurijssen.be>
---
 slstatus.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/slstatus.c b/slstatus.c
index 30a9d09..e1f0e00 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -178,21 +178,18 @@ cpu_freq(void)
 static const char *
 cpu_perc(void)
 {
-       struct timespec delay;
        int perc;
-       long double a[4], b[4];
+       static long double a[4];
+       static int valid;
+       long double b[4];
 
+       memcpy(b, a, sizeof(b));
        if (pscanf("/proc/stat", "%*s %Lf %Lf %Lf %Lf", &a[0], &a[1], &a[2],
                   &a[3]) != 4) {
                return unknown_str;
        }
-
-       delay.tv_sec = (interval / 2) / 1000;
-       delay.tv_nsec = ((interval / 2) % 1000) * 1000000;
-       nanosleep(&delay, NULL);
-
-       if (pscanf("/proc/stat", "%*s %Lf %Lf %Lf %Lf", &b[0], &b[1], &b[2],
-                  &b[3]) != 4) {
+       if (!valid) {
+               valid = 1;
                return unknown_str;
        }
 
-- 
1.8.5.rc3


Reply via email to