aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/comet.c45
1 files changed, 31 insertions, 14 deletions
diff --git a/src/comet.c b/src/comet.c
index 4341a14..b8cce7d 100644
--- a/src/comet.c
+++ b/src/comet.c
@@ -71,11 +71,15 @@ static gboolean cpu_update(Button *btn)
char *perc = cpu_percentage();
// Don't update on error
- if (perc != NULL) {
- ButtonSimple *sbtn = CAST(btn, ButtonSimple);
- button_simple_set_text(btn, perc, sbtn->text_color);
+ if (perc == NULL)
+ return G_SOURCE_CONTINUE;
+
+ ButtonSimple *sbtn = CAST(btn, ButtonSimple);
+ bool update = g_strcmp0(perc, sbtn->text) != 0;
+ button_simple_set_text(btn, perc, sbtn->text_color);
+
+ if (update)
state_request_redraw(sbtn->data, false);
- }
return G_SOURCE_CONTINUE;
}
@@ -97,26 +101,35 @@ static gboolean ram_update(Button *btn)
int usage = 100 * (total - unused - buffers - cached) / total;
fclose(meminfo);
+
ButtonSimple *sbtn = CAST(btn, ButtonSimple);
- button_simple_set_text(btn, g_strdup_printf(" %d%%", usage), sbtn->text_color);
+ char *ram = g_strdup_printf(" %d%%", usage);
+ bool update = g_strcmp0(ram, sbtn->text) != 0;
+ button_simple_set_text(btn, ram, sbtn->text_color);
+
+ if (update)
+ state_request_redraw(sbtn->data, false);
- state_request_redraw(sbtn->data, false);
return G_SOURCE_CONTINUE;
}
static gboolean temp_update(Button *btn)
{
- FILE *temp = fopen("/sys/class/thermal/thermal_zone2/temp", "rb");
- g_assert_nonnull(temp);
+ FILE *thermal = fopen("/sys/class/thermal/thermal_zone2/temp", "rb");
+ g_assert_nonnull(thermal);
uintmax_t value;
- g_assert(1 == fscanf(temp, "%ju\n", &value));
- fclose(temp);
+ g_assert(1 == fscanf(thermal, "%ju\n", &value));
+ fclose(thermal);
ButtonSimple *sbtn = CAST(btn, ButtonSimple);
- button_simple_set_text(btn, g_strdup_printf(" %d °C", (int)(value / 1000)), sbtn->text_color);
+ char *temp = g_strdup_printf(" %d °C", (int)(value / 1000));
+ bool update = g_strcmp0(temp, sbtn->text) != 0;
+ button_simple_set_text(btn, temp, sbtn->text_color);
+
+ if (update)
+ state_request_redraw(sbtn->data, false);
- state_request_redraw(sbtn->data, false);
return G_SOURCE_CONTINUE;
}
@@ -127,9 +140,13 @@ static gboolean disk_update(Button *btn)
const double used = 1.0 - ((double)buffer.f_bavail / (double)buffer.f_blocks);
ButtonSimple *sbtn = CAST(btn, ButtonSimple);
- button_simple_set_text(btn, g_strdup_printf(" %d%%", (int)round(used * 100.0)), sbtn->text_color);
+ char *disk = g_strdup_printf(" %d%%", (int)round(used * 100.0));
+ bool update = g_strcmp0(disk, sbtn->text) != 0;
+ button_simple_set_text(btn, disk, sbtn->text_color);
+
+ if (update)
+ state_request_redraw(sbtn->data, false);
- state_request_redraw(sbtn->data, false);
return G_SOURCE_CONTINUE;
}