diff options
author | Ian Fan <ianfan0@gmail.com> | 2018-12-05 17:36:37 +0000 |
---|---|---|
committer | Ian Fan <ianfan0@gmail.com> | 2018-12-31 20:40:18 +0000 |
commit | ef555012fa49e66c30264fcb7ab2d62391b4aa2e (patch) | |
tree | f57112fc252f9b5dd5f6d1ba27b6633b177c6151 | |
parent | swaybar: add tray interface (diff) | |
download | sway-ef555012fa49e66c30264fcb7ab2d62391b4aa2e.tar.gz sway-ef555012fa49e66c30264fcb7ab2d62391b4aa2e.tar.zst sway-ef555012fa49e66c30264fcb7ab2d62391b4aa2e.zip |
swaybar: add skeleton dbus code to tray
-rw-r--r-- | swaybar/tray/tray.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/swaybar/tray/tray.c b/swaybar/tray/tray.c index d5fb3ea9..0a4f2955 100644 --- a/swaybar/tray/tray.c +++ b/swaybar/tray/tray.c | |||
@@ -1,19 +1,48 @@ | |||
1 | #include <cairo.h> | 1 | #include <cairo.h> |
2 | #include <stdint.h> | 2 | #include <stdint.h> |
3 | #include <stdlib.h> | 3 | #include <stdlib.h> |
4 | #include <string.h> | ||
4 | #include "swaybar/bar.h" | 5 | #include "swaybar/bar.h" |
5 | #include "swaybar/tray/tray.h" | 6 | #include "swaybar/tray/tray.h" |
6 | #include "log.h" | 7 | #include "log.h" |
7 | 8 | ||
8 | struct swaybar_tray *create_tray(struct swaybar *bar) { | 9 | struct swaybar_tray *create_tray(struct swaybar *bar) { |
9 | wlr_log(WLR_DEBUG, "Initializing tray"); | 10 | wlr_log(WLR_DEBUG, "Initializing tray"); |
10 | return NULL; | 11 | |
12 | sd_bus *bus; | ||
13 | int ret = sd_bus_open_user(&bus); | ||
14 | if (ret < 0) { | ||
15 | wlr_log(WLR_ERROR, "Failed to connect to user bus: %s", strerror(-ret)); | ||
16 | return NULL; | ||
17 | } | ||
18 | |||
19 | struct swaybar_tray *tray = calloc(1, sizeof(struct swaybar_tray)); | ||
20 | if (!tray) { | ||
21 | return NULL; | ||
22 | } | ||
23 | tray->bar = bar; | ||
24 | tray->bus = bus; | ||
25 | tray->fd = sd_bus_get_fd(tray->bus); | ||
26 | return tray; | ||
11 | } | 27 | } |
12 | 28 | ||
13 | void destroy_tray(struct swaybar_tray *tray) { | 29 | void destroy_tray(struct swaybar_tray *tray) { |
30 | if (!tray) { | ||
31 | return; | ||
32 | } | ||
33 | sd_bus_flush_close_unref(tray->bus); | ||
34 | free(tray); | ||
14 | } | 35 | } |
15 | 36 | ||
16 | void tray_in(int fd, short mask, void *data) { | 37 | void tray_in(int fd, short mask, void *data) { |
38 | sd_bus *bus = data; | ||
39 | int ret; | ||
40 | while ((ret = sd_bus_process(bus, NULL)) > 0) { | ||
41 | // This space intentionally left blank | ||
42 | } | ||
43 | if (ret < 0) { | ||
44 | wlr_log(WLR_ERROR, "Failed to process bus: %s", strerror(-ret)); | ||
45 | } | ||
17 | } | 46 | } |
18 | 47 | ||
19 | uint32_t render_tray(cairo_t *cairo, struct swaybar_output *output, double *x) { | 48 | uint32_t render_tray(cairo_t *cairo, struct swaybar_output *output, double *x) { |