commit 2ebb6073b7eb052984008110e3df4469d2d9c596
parent 9a3fb33e33b2503809d9d3a1b0d10c21bc112a80
Author: Scott Anderson <scott@anderso.nz>
Date: Sat, 21 Apr 2018 14:39:46 +1200
Remove status command event on error
This prevents very high CPU load when the status command dies,
and poll continuously awoken with POLLHUP.
Diffstat:
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/swaybar/bar.c b/swaybar/bar.c
@@ -418,7 +418,11 @@ static void ipc_in(int fd, short mask, void *_bar) {
static void status_in(int fd, short mask, void *_bar) {
struct swaybar *bar = (struct swaybar *)_bar;
- if (status_handle_readable(bar->status)) {
+ if (mask & (POLLHUP | POLLERR)) {
+ status_error(bar->status, "[error reading from status command]");
+ render_all_frames(bar);
+ remove_event(fd);
+ } else if (status_handle_readable(bar->status)) {
render_all_frames(bar);
}
}