diff --git a/epplets/E-Cpu.c b/epplets/E-Cpu.c index 08b3d85..7eaeba6 100644 --- a/epplets/E-Cpu.c +++ b/epplets/E-Cpu.c @@ -16,6 +16,7 @@ int cpus = 0; double *prev_val = NULL; double *prev_val_nice = NULL; +double *prev_val_total = NULL; int *load_val = NULL; Window win; RGB_buf buf; @@ -238,35 +239,33 @@ cb_timer(void *data) for (i = 0; i < cpus; i++) { char sUserCPU[64]; - char sNiceCPU[64]; - double val, val2, val_nice, val2_nice; + char sNiceCPU[64]; + char sSystemCPU[64]; + char sTotalCPU[64]; + double val, val2, val_nice, val2_nice, val_total; fgets(s, 255, f); - sscanf(s, "%*s %s %s %*s %*s", sUserCPU, sNiceCPU); + sscanf(s, "%*s %s %s %s %s", + sUserCPU, sNiceCPU, sSystemCPU, sTotalCPU); val = atof(sUserCPU); val_nice = atof(sNiceCPU); + val_total = atof(sTotalCPU); - val2 = val - prev_val[i]; + val2 = 100 * (val - prev_val[i]) / (val_total - prev_val_total[i]); + if (val2 > 100) val2 = 100; + + val2_nice = 100 * (val_nice - prev_val_nice[i]) / (val_total - prev_val_total[i]); + if (val2_nice > 100) val2_nice = 100; + prev_val[i] = val; - val2 *= 10; - if (val2 > 100) - val2 = 100; - - val2_nice = val_nice - prev_val_nice[i]; - prev_val_nice[i] = val_nice; - val2_nice *= 10; - if (val2_nice > 100) - val2_nice = 100; - - if (include_nice) - load_val[i] = val2 + val2_nice; - else - load_val[i] = val2; - - if (load_val[i] > 100) - load_val[i] = 100; + prev_val_nice[i] = val_nice; + prev_val_total[i] = val_total; + if (include_nice) load_val[i] = val2 + val2_nice; + else load_val[i] = val2; + + if (load_val[i] > 100) load_val[i] = 100; } fclose(f); } @@ -451,6 +450,7 @@ main(int argc, char **argv) load_val = malloc(sizeof(int) * cpus); prev_val = malloc(sizeof(double) * cpus); prev_val_nice = malloc(sizeof(double) * cpus); + prev_val_total = malloc(sizeof(double) * cpus); Epplet_Init("E-Cpu", "0.1", "Enlightenment CPU Epplet", 3, 3, argc, argv, 0);