mirror of
https://github.com/swaywm/sway.git
synced 2026-03-31 07:11:24 -04:00
Handle swaybar status line errors
The event loop API was redesigned to avoid race conditions as well. Fixes #1583
This commit is contained in:
parent
6ffcb031f9
commit
a83bca6db5
5 changed files with 94 additions and 12 deletions
|
|
@ -274,6 +274,14 @@ static void respond_ipc(int fd, short mask, void *_bar) {
|
|||
|
||||
static void respond_command(int fd, short mask, void *_bar) {
|
||||
struct bar *bar = (struct bar *)_bar;
|
||||
if (mask & POLLHUP) {
|
||||
// Something's wrong with the command
|
||||
handle_status_hup(bar->status);
|
||||
dirty = true;
|
||||
// We will stop watching the status line so swaybar won't
|
||||
// flood the CPU with its HUPs
|
||||
remove_event(fd);
|
||||
}
|
||||
dirty = handle_status_line(bar);
|
||||
}
|
||||
|
||||
|
|
@ -286,7 +294,7 @@ static void respond_output(int fd, short mask, void *_output) {
|
|||
|
||||
void bar_run(struct bar *bar) {
|
||||
add_event(bar->ipc_event_socketfd, POLLIN, respond_ipc, bar);
|
||||
add_event(bar->status_read_fd, POLLIN, respond_command, bar);
|
||||
add_event(bar->status_read_fd, POLLIN | POLLHUP, respond_command, bar);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < bar->outputs->length; ++i) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue