diff options
author | Drew DeVault <ddevault@linode.com> | 2015-11-18 09:55:55 -0500 |
---|---|---|
committer | Drew DeVault <ddevault@linode.com> | 2015-11-18 09:55:55 -0500 |
commit | 86372d00db86502cb41ae645b917c8191c22c994 (patch) | |
tree | 47a11db9d457d7f4f95dcf4531d1f8bac1994da0 | |
parent | Normalize indentation (diff) | |
download | sway-86372d00db86502cb41ae645b917c8191c22c994.tar.gz sway-86372d00db86502cb41ae645b917c8191c22c994.tar.zst sway-86372d00db86502cb41ae645b917c8191c22c994.zip |
Fix SIGBUS from wayland clients
-rw-r--r-- | include/client/client.h | 1 | ||||
-rw-r--r-- | swaybg/main.c | 4 | ||||
-rw-r--r-- | wayland/buffers.c | 2 |
3 files changed, 4 insertions, 3 deletions
diff --git a/include/client/client.h b/include/client/client.h index 39f18caf..5b24d315 100644 --- a/include/client/client.h +++ b/include/client/client.h | |||
@@ -15,7 +15,6 @@ struct output_state { | |||
15 | 15 | ||
16 | struct buffer { | 16 | struct buffer { |
17 | struct wl_buffer *buffer; | 17 | struct wl_buffer *buffer; |
18 | int fd; | ||
19 | cairo_surface_t *surface; | 18 | cairo_surface_t *surface; |
20 | cairo_t *cairo; | 19 | cairo_t *cairo; |
21 | PangoContext *pango; | 20 | PangoContext *pango; |
diff --git a/swaybg/main.c b/swaybg/main.c index 790eb66b..b4614ac0 100644 --- a/swaybg/main.c +++ b/swaybg/main.c | |||
@@ -21,7 +21,7 @@ int main(int argc, char **argv) { | |||
21 | state->width = output->width; | 21 | state->width = output->width; |
22 | state->height = output->height; | 22 | state->height = output->height; |
23 | 23 | ||
24 | uint8_t r = 100, g = 100, b = 100; | 24 | uint8_t r = 0, g = 0, b = 0; |
25 | 25 | ||
26 | do { | 26 | do { |
27 | if (client_prerender(state) && state->cairo) { | 27 | if (client_prerender(state) && state->cairo) { |
@@ -31,7 +31,7 @@ int main(int argc, char **argv) { | |||
31 | 31 | ||
32 | client_render(state); | 32 | client_render(state); |
33 | 33 | ||
34 | r++; if (r == 0) { g++; if (g == 0) { b++; } } | 34 | r++; g += 2; b += 4; |
35 | } | 35 | } |
36 | } while (wl_display_dispatch(state->display) != -1); | 36 | } while (wl_display_dispatch(state->display) != -1); |
37 | 37 | ||
diff --git a/wayland/buffers.c b/wayland/buffers.c index f426b912..6117e10b 100644 --- a/wayland/buffers.c +++ b/wayland/buffers.c | |||
@@ -66,6 +66,8 @@ static struct buffer *create_buffer(struct client_state *state, struct buffer *b | |||
66 | free(name); | 66 | free(name); |
67 | fd = -1; | 67 | fd = -1; |
68 | 68 | ||
69 | buf->width = width; | ||
70 | buf->height = height; | ||
69 | buf->surface = cairo_image_surface_create_for_data(data, CAIRO_FORMAT_ARGB32, width, height, stride); | 71 | buf->surface = cairo_image_surface_create_for_data(data, CAIRO_FORMAT_ARGB32, width, height, stride); |
70 | buf->cairo = cairo_create(buf->surface); | 72 | buf->cairo = cairo_create(buf->surface); |
71 | buf->pango = pango_cairo_create_context(buf->cairo); | 73 | buf->pango = pango_cairo_create_context(buf->cairo); |