commit adadb109a766ce70791fad38b02cc62a7b2e6b54
parent 5a9cc9644648c70b330b9b3dc866ddb2a7e57a7a
Author: Drew DeVault <sir@cmpwn.com>
Date: Wed, 16 Dec 2015 20:09:23 -0500
Only re-render swaybar when it has changed
Fixes #345
Diffstat:
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git 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);
}