diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-04-21 14:45:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-21 14:45:09 +0200 |
commit | b116414bd5dbc15ec1df3734a4c99c1b5e304982 (patch) | |
tree | 7c7e12385f66b2ce35f8fb74819093525644ff16 | |
parent | 5e16bc96b18bce795795235ddd17ed9bb2f14628 (diff) | |
parent | 70d820be252ed530dd456b0d4c3fc84a3377f8c8 (diff) |
Merge pull request #880 from emersion/advertize-renderer-formats
Advertize supported renderer formats
-rw-r--r-- | include/wlr/render/wlr_renderer.h | 2 | ||||
-rw-r--r-- | render/wlr_renderer.c | 20 | ||||
-rw-r--r-- | rootston/main.c | 2 |
3 files changed, 23 insertions, 1 deletions
diff --git a/include/wlr/render/wlr_renderer.h b/include/wlr/render/wlr_renderer.h index 9ead7d81..eb365762 100644 --- a/include/wlr/render/wlr_renderer.h +++ b/include/wlr/render/wlr_renderer.h @@ -92,6 +92,8 @@ bool wlr_renderer_read_pixels(struct wlr_renderer *r, enum wl_shm_format fmt, */ bool wlr_renderer_format_supported(struct wlr_renderer *r, enum wl_shm_format fmt); +void wlr_renderer_init_wl_shm(struct wlr_renderer *r, + struct wl_display *display); /** * Destroys this wlr_renderer. Textures must be destroyed separately. */ diff --git a/render/wlr_renderer.c b/render/wlr_renderer.c index 80649b8c..a41ae388 100644 --- a/render/wlr_renderer.c +++ b/render/wlr_renderer.c @@ -4,6 +4,7 @@ #include <wlr/render/interface.h> #include <wlr/render/wlr_renderer.h> #include <wlr/types/wlr_matrix.h> +#include <wlr/util/log.h> void wlr_renderer_init(struct wlr_renderer *renderer, const struct wlr_renderer_impl *impl) { @@ -151,3 +152,22 @@ bool wlr_renderer_format_supported(struct wlr_renderer *r, enum wl_shm_format fmt) { return r->impl->format_supported(r, fmt); } + +void wlr_renderer_init_wl_shm(struct wlr_renderer *r, + struct wl_display *display) { + if (wl_display_init_shm(display)) { + wlr_log(L_ERROR, "Failed to initialize shm"); + return; + } + + size_t len; + const enum wl_shm_format *formats = wlr_renderer_get_formats(r, &len); + if (formats == NULL) { + wlr_log(L_ERROR, "Failed to initialize shm: cannot get formats"); + return; + } + + for (size_t i = 0; i < len; ++i) { + wl_display_add_shm_format(display, formats[i]); + } +} diff --git a/rootston/main.c b/rootston/main.c index cfa3e4aa..a61d65c9 100644 --- a/rootston/main.c +++ b/rootston/main.c @@ -43,7 +43,7 @@ int main(int argc, char **argv) { assert(server.renderer); server.data_device_manager = wlr_data_device_manager_create(server.wl_display); - wl_display_init_shm(server.wl_display); + wlr_renderer_init_wl_shm(server.renderer, server.wl_display); server.desktop = desktop_create(&server, server.config); server.input = input_create(&server, server.config); |