aboutsummaryrefslogtreecommitdiffstats
path: root/swaybg
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2015-11-19 08:20:07 -0500
committerLibravatar Drew DeVault <sir@cmpwn.com>2015-11-19 08:20:07 -0500
commit1a3a7f25140d6751906789582c11edffc3c14090 (patch)
tree0b194a5084016b7de24248938bfeb4fb0fb766d5 /swaybg
parentRefactor the crap out of wayland clients (diff)
downloadsway-1a3a7f25140d6751906789582c11edffc3c14090.tar.gz
sway-1a3a7f25140d6751906789582c11edffc3c14090.tar.zst
sway-1a3a7f25140d6751906789582c11edffc3c14090.zip
Basic image rendering for swaybg
Diffstat (limited to 'swaybg')
-rw-r--r--swaybg/main.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/swaybg/main.c b/swaybg/main.c
index 56fdc06d..fd5e34c6 100644
--- a/swaybg/main.c
+++ b/swaybg/main.c
@@ -28,6 +28,10 @@ int main(int argc, char **argv) {
28 surfaces = create_list(); 28 surfaces = create_list();
29 registry = registry_poll(); 29 registry = registry_poll();
30 30
31 if (argc < 2) {
32 sway_abort("Usage: swaybg path/to/file.png");
33 }
34
31 if (!registry->desktop_shell) { 35 if (!registry->desktop_shell) {
32 sway_abort("swaybg requires the compositor to support the desktop-shell extension."); 36 sway_abort("swaybg requires the compositor to support the desktop-shell extension.");
33 } 37 }
@@ -45,19 +49,18 @@ int main(int argc, char **argv) {
45 list_add(surfaces, window); 49 list_add(surfaces, window);
46 } 50 }
47 51
48 uint8_t r = 0, g = 0, b = 0; 52 cairo_surface_t *image = cairo_image_surface_create_from_png(argv[1]);
49 53
50 do { 54 do {
51 for (i = 0; i < surfaces->length; ++i) { 55 for (i = 0; i < surfaces->length; ++i) {
52 struct window *window = surfaces->items[i]; 56 struct window *window = surfaces->items[i];
53 if (window_prerender(window) && window->cairo) { 57 if (window_prerender(window) && window->cairo) {
54 cairo_set_source_rgb(window->cairo, r / 256.0, g / 256.0, b / 256.0); 58 cairo_set_source_surface(window->cairo, image, 0, 0);
55 cairo_rectangle(window->cairo, 0, 0, window->width, window->height); 59 cairo_rectangle(window->cairo, 0, 0, window->width, window->height);
56 cairo_fill(window->cairo); 60 cairo_fill(window->cairo);
57 61
58 window_render(window); 62 window_render(window);
59 } 63 }
60 r++; g += 2; b += 4;
61 } 64 }
62 } while (wl_display_dispatch(registry->display) != -1); 65 } while (wl_display_dispatch(registry->display) != -1);
63 66