aboutsummaryrefslogtreecommitdiffstats
path: root/swaybg
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2015-11-19 08:34:23 -0500
committerLibravatar Drew DeVault <sir@cmpwn.com>2015-11-19 08:34:32 -0500
commit392f02da644e29e24196d689860386a76f759d24 (patch)
treee0fdba840b40704a0ee5dcdef71a7d7e8cbd108f /swaybg
parentBasic image rendering for swaybg (diff)
downloadsway-392f02da644e29e24196d689860386a76f759d24.tar.gz
sway-392f02da644e29e24196d689860386a76f759d24.tar.zst
sway-392f02da644e29e24196d689860386a76f759d24.zip
Stretch image to fit output resolution
Diffstat (limited to 'swaybg')
-rw-r--r--swaybg/main.c22
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];