diff options
-rw-r--r-- | swaybar/tray/item.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/swaybar/tray/item.c b/swaybar/tray/item.c index 4fa6c97b..027b3001 100644 --- a/swaybar/tray/item.c +++ b/swaybar/tray/item.c | |||
@@ -1,4 +1,5 @@ | |||
1 | #define _POSIX_C_SOURCE 200809L | 1 | #define _POSIX_C_SOURCE 200809L |
2 | #include <arpa/inet.h> | ||
2 | #include <cairo.h> | 3 | #include <cairo.h> |
3 | #include <stdbool.h> | 4 | #include <stdbool.h> |
4 | #include <stdlib.h> | 5 | #include <stdlib.h> |
@@ -76,7 +77,12 @@ static int read_pixmap(sd_bus_message *msg, struct swaybar_sni *sni, | |||
76 | struct swaybar_pixmap *pixmap = | 77 | struct swaybar_pixmap *pixmap = |
77 | malloc(sizeof(struct swaybar_pixmap) + npixels); | 78 | malloc(sizeof(struct swaybar_pixmap) + npixels); |
78 | pixmap->size = height; | 79 | pixmap->size = height; |
79 | memcpy(pixmap->pixels, pixels, npixels); | 80 | |
81 | // convert from network byte order to host byte order | ||
82 | for (int i = 0; i < height * width; ++i) { | ||
83 | ((uint32_t *)pixmap->pixels)[i] = ntohl(((uint32_t *)pixels)[i]); | ||
84 | } | ||
85 | |||
80 | list_add(pixmaps, pixmap); | 86 | list_add(pixmaps, pixmap); |
81 | } else { | 87 | } else { |
82 | sway_log(SWAY_DEBUG, "%s %s: discard invalid icon w:%d h:%d", sni->watcher_id, prop, width, height); | 88 | sway_log(SWAY_DEBUG, "%s %s: discard invalid icon w:%d h:%d", sni->watcher_id, prop, width, height); |