summaryrefslogtreecommitdiffstats
path: root/swaybar/bar.c
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2019-02-15 16:25:28 +0100
committerLibravatar GitHub <noreply@github.com>2019-02-15 16:25:28 +0100
commitcdbf8e8b2540768cc4c82176f6510d8e6ae8f037 (patch)
treee98b9ffe575791ab9fb48e52e5339c55bff2005a /swaybar/bar.c
parentapply_output_config: dpms on before modeset (diff)
parenttray: use correct parameter to set bus slot to floating (diff)
downloadsway-cdbf8e8b2540768cc4c82176f6510d8e6ae8f037.tar.gz
sway-cdbf8e8b2540768cc4c82176f6510d8e6ae8f037.tar.zst
sway-cdbf8e8b2540768cc4c82176f6510d8e6ae8f037.zip
Merge pull request #3692 from ianyfan/swaybar
Fix crash and memory leak on bar termination
Diffstat (limited to 'swaybar/bar.c')
-rw-r--r--swaybar/bar.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/swaybar/bar.c b/swaybar/bar.c
index a1f7bfdb..db1c1222 100644
--- a/swaybar/bar.c
+++ b/swaybar/bar.c
@@ -4,6 +4,7 @@
4#include <fcntl.h> 4#include <fcntl.h>
5#include <poll.h> 5#include <poll.h>
6#include <signal.h> 6#include <signal.h>
7#include <stdbool.h>
7#include <stdlib.h> 8#include <stdlib.h>
8#include <string.h> 9#include <string.h>
9#include <sys/wait.h> 10#include <sys/wait.h>
@@ -403,8 +404,7 @@ bool bar_setup(struct swaybar *bar, const char *socket_path) {
403static void display_in(int fd, short mask, void *data) { 404static void display_in(int fd, short mask, void *data) {
404 struct swaybar *bar = data; 405 struct swaybar *bar = data;
405 if (wl_display_dispatch(bar->display) == -1) { 406 if (wl_display_dispatch(bar->display) == -1) {
406 bar_teardown(bar); 407 bar->running = false;
407 exit(0);
408 } 408 }
409} 409}
410 410
@@ -439,7 +439,7 @@ void bar_run(struct swaybar *bar) {
439 loop_add_fd(bar->eventloop, bar->tray->fd, POLLIN, tray_in, bar->tray->bus); 439 loop_add_fd(bar->eventloop, bar->tray->fd, POLLIN, tray_in, bar->tray->bus);
440 } 440 }
441#endif 441#endif
442 while (1) { 442 while (bar->running) {
443 errno = 0; 443 errno = 0;
444 if (wl_display_flush(bar->display) == -1 && errno != EAGAIN) { 444 if (wl_display_flush(bar->display) == -1 && errno != EAGAIN) {
445 break; 445 break;