diff options
author | Drew DeVault <sir@cmpwn.com> | 2015-11-19 08:34:23 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2015-11-19 08:34:32 -0500 |
commit | 392f02da644e29e24196d689860386a76f759d24 (patch) | |
tree | e0fdba840b40704a0ee5dcdef71a7d7e8cbd108f /swaybg/main.c | |
parent | Basic image rendering for swaybg (diff) | |
download | sway-392f02da644e29e24196d689860386a76f759d24.tar.gz sway-392f02da644e29e24196d689860386a76f759d24.tar.zst sway-392f02da644e29e24196d689860386a76f759d24.zip |
Stretch image to fit output resolution
Diffstat (limited to 'swaybg/main.c')
-rw-r--r-- | swaybg/main.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/swaybg/main.c b/swaybg/main.c index fd5e34c6..080422e5 100644 --- a/swaybg/main.c +++ b/swaybg/main.c | |||
@@ -50,19 +50,21 @@ int main(int argc, char **argv) { | |||
50 | } | 50 | } |
51 | 51 | ||
52 | cairo_surface_t *image = cairo_image_surface_create_from_png(argv[1]); | 52 | cairo_surface_t *image = cairo_image_surface_create_from_png(argv[1]); |
53 | double width = cairo_image_surface_get_width(image); | ||
54 | double height = cairo_image_surface_get_height(image); | ||
53 | 55 | ||
54 | do { | 56 | for (i = 0; i < surfaces->length; ++i) { |
55 | for (i = 0; i < surfaces->length; ++i) { | 57 | struct window *window = surfaces->items[i]; |
56 | struct window *window = surfaces->items[i]; | 58 | if (window_prerender(window) && window->cairo) { |
57 | if (window_prerender(window) && window->cairo) { | 59 | cairo_scale(window->cairo, window->width / width, window->height / height); |
58 | cairo_set_source_surface(window->cairo, image, 0, 0); | 60 | cairo_set_source_surface(window->cairo, image, 0, 0); |
59 | cairo_rectangle(window->cairo, 0, 0, window->width, window->height); | 61 | cairo_paint(window->cairo); |
60 | cairo_fill(window->cairo); | ||
61 | 62 | ||
62 | window_render(window); | 63 | window_render(window); |
63 | } | ||
64 | } | 64 | } |
65 | } while (wl_display_dispatch(registry->display) != -1); | 65 | } |
66 | |||
67 | while (wl_display_dispatch(registry->display) != -1); | ||
66 | 68 | ||
67 | for (i = 0; i < surfaces->length; ++i) { | 69 | for (i = 0; i < surfaces->length; ++i) { |
68 | struct window *window = surfaces->items[i]; | 70 | struct window *window = surfaces->items[i]; |