From adadb109a766ce70791fad38b02cc62a7b2e6b54 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Wed, 16 Dec 2015 20:09:23 -0500 Subject: [PATCH] Only re-render swaybar when it has changed Fixes #345 --- swaybar/main.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/swaybar/main.c b/swaybar/main.c index 65d2a4939..60687bc51 100644 --- a/swaybar/main.c +++ b/swaybar/main.c @@ -51,6 +51,7 @@ FILE *command; char *line, *output, *status_command; struct registry *registry; struct window *window; +bool dirty = true; struct colors colors = { .background = 0x000000FF, @@ -278,6 +279,7 @@ void update() { if (line[l] == '\n') { line[l] = '\0'; } + dirty = true; } } if (ioctl(socketfd, FIONREAD, &pending) != -1 && pending > 0) { @@ -285,6 +287,7 @@ void update() { char *buf = ipc_recv_response(socketfd, &len); free(buf); ipc_update_workspaces(); + dirty = true; } } @@ -425,8 +428,8 @@ int main(int argc, char **argv) { window->height = height + MARGIN * 2; do { - if (window_prerender(window) && window->cairo) { - update(); + update(); + if (dirty && window_prerender(window) && window->cairo) { render(); window_render(window); }