aboutsummaryrefslogtreecommitdiff
path: root/sway/desktop
diff options
context:
space:
mode:
authorSimon Zeni <simon@bl4ckb0ne.ca>2021-11-15 13:32:52 -0500
committerSimon Ser <contact@emersion.fr>2021-11-18 17:47:19 +0100
commit5865af75cf8029cc703cda36b68daafcb658c97b (patch)
tree0446444369c63c05109ffab3c027127ac19da17f /sway/desktop
parentcbecc5cbaed6b30c995d2c245def458e383b4e38 (diff)
downloadsway-5865af75cf8029cc703cda36b68daafcb658c97b.tar.xz
sway: create wlr_renderer and wlr_allocator
wlroots now required the compositor to create its own wlr_renderer and wlr_allocator to initialize the wlr_output
Diffstat (limited to 'sway/desktop')
-rw-r--r--sway/desktop/output.c6
-rw-r--r--sway/desktop/render.c16
2 files changed, 10 insertions, 12 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index edec71ad..cd9fd3a6 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -850,6 +850,12 @@ void handle_new_output(struct wl_listener *listener, void *data) {
return;
}
+ if (!wlr_output_init_render(wlr_output, server->allocator,
+ server->renderer)) {
+ sway_log(SWAY_ERROR, "Failed to init output render");
+ return;
+ }
+
struct sway_output *output = output_create(wlr_output);
if (!output) {
return;
diff --git a/sway/desktop/render.c b/sway/desktop/render.c
index 17fc8f6f..6c8c77ed 100644
--- a/sway/desktop/render.c
+++ b/sway/desktop/render.c
@@ -52,7 +52,7 @@ static int scale_length(int length, int offset, float scale) {
static void scissor_output(struct wlr_output *wlr_output,
pixman_box32_t *rect) {
- struct wlr_renderer *renderer = wlr_backend_get_renderer(wlr_output->backend);
+ struct wlr_renderer *renderer = wlr_output->renderer;
assert(renderer);
struct wlr_box box = {
@@ -100,8 +100,7 @@ static void render_texture(struct wlr_output *wlr_output,
pixman_region32_t *output_damage, struct wlr_texture *texture,
const struct wlr_fbox *src_box, const struct wlr_box *dst_box,
const float matrix[static 9], float alpha) {
- struct wlr_renderer *renderer =
- wlr_backend_get_renderer(wlr_output->backend);
+ struct wlr_renderer *renderer = wlr_output->renderer;
struct sway_output *output = wlr_output->data;
pixman_region32_t damage;
@@ -218,8 +217,7 @@ void render_rect(struct sway_output *output,
pixman_region32_t *output_damage, const struct wlr_box *_box,
float color[static 4]) {
struct wlr_output *wlr_output = output->wlr_output;
- struct wlr_renderer *renderer =
- wlr_backend_get_renderer(wlr_output->backend);
+ struct wlr_renderer *renderer = wlr_output->renderer;
struct wlr_box box;
memcpy(&box, _box, sizeof(struct wlr_box));
@@ -1013,13 +1011,7 @@ static void render_seatops(struct sway_output *output,
void output_render(struct sway_output *output, struct timespec *when,
pixman_region32_t *damage) {
struct wlr_output *wlr_output = output->wlr_output;
-
- struct wlr_renderer *renderer =
- wlr_backend_get_renderer(wlr_output->backend);
- if (!sway_assert(renderer != NULL,
- "expected the output backend to have a renderer")) {
- return;
- }
+ struct wlr_renderer *renderer = output->server->renderer;
struct sway_workspace *workspace = output->current.active_workspace;
if (workspace == NULL) {