[PATCH kaiju] wlroots: update to 0.15.0
Export this patch
---
I'm not really sure if the wlr_output_init_render should be on where
I've put it, I didn't really grok how kaiju_output flows. Please let me
You put the `wlr_output_init_render` at the right place. The wlr_output must
initialize its renderer in the `wlr_backend::new_output` event. It doesn't
really matter if it's before creating the `kaiju_output` or after, as long
as it's done so the output can render something.
Kaiju takes a lot of inspiration from tinywl [1] and cage [2]. If you're
curious and want to learn more about how wlroots work, it's a good place to
start.
[1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c
[2]: https://github.com/Hjdskes/cage
know if there's anything I could change.
layer.c | 4 ++ --
output.c | 2 ++
server.c | 6 +++++ -
server.h | 2 ++
view.h | 2 + -
5 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/layer.c b/layer.c
index 193b2e0..31e9dc3 100644
--- a/layer.c
+++ b/layer.c
@@ -152,7 +152,7 @@ arrange_layer(struct kaiju_output *output, struct wl_list *layers,
if (box.width < 0 || box.height < 0) {
wlr_log(WLR_ERROR, "Layer %s has invalid size",
surface->namespace);
- wlr_layer_surface_v1_close(surface);
+ wlr_layer_surface_v1_destroy(surface);
}
layer->geometry = box;
@@ -299,7 +299,7 @@ new_kaiju_layer_handler(struct wl_listener *listener, void *data)
* to arrange it
*/
struct wlr_layer_surface_v1_state old_state = layer_surface->current;
- layer_surface->current = layer_surface->client_pending;
+ layer_surface->current = layer_surface->pending;
arrange_layers(server);
layer_surface->current = old_state;
}
diff --git a/output.c b/output.c
index 1f98628..f77638e 100644
--- a/output.c
+++ b/output.c
@@ -46,6 +46,8 @@ kaiju_output_create(struct wlr_output *wlr_output, struct kaiju_server *server)
return NULL;
}
+ wlr_output_init_render(wlr_output, server->wlr_allocator, server->wlr_renderer);
+
wlr_output_layout_add_auto(server->wlr_output_layout, wlr_output);
wlr_output_create_global(wlr_output);
diff --git a/server.c b/server.c
index 9dbc82c..acaea16 100644
--- a/server.c
+++ b/server.c
@@ -145,7 +145,11 @@ kaiju_server_init(struct kaiju_server *server)
goto server_init_error;
}
- server->wlr_renderer = wlr_backend_get_renderer(server->wlr_backend);
+ server->wlr_renderer = wlr_renderer_autocreate(server->wlr_backend);
+
+ server->wlr_allocator = wlr_allocator_autocreate(
+ server->wlr_backend, server->wlr_renderer);
+
wlr_renderer_init_wl_display(server->wlr_renderer, server->wl_display);
server->wlr_compositor = wlr_compositor_create(server->wl_display,
diff --git a/server.h b/server.h
index f1cfa35..91e20ee 100644
--- a/server.h
+++ b/server.h
@@ -13,6 +13,7 @@
#include <wlr/types/wlr_virtual_keyboard_v1.h>
#include <wlr/types/wlr_input_method_v2.h>
#include <wlr/render/wlr_renderer.h>
+ #include <wlr/render/allocator.h>
struct kaiju_seat;
struct kaiju_output;
@@ -24,6 +25,7 @@ struct kaiju_server {
struct wlr_backend *wlr_backend;
struct wlr_renderer *wlr_renderer;
+ struct wlr_allocator *wlr_allocator;
struct wlr_compositor *wlr_compositor;
struct wlr_data_device_manager *wlr_data_device_manager;
struct wlr_output_layout *wlr_output_layout;
diff --git a/view.h b/view.h
index 2a52521..5356b1c 100644
--- a/view.h
+++ b/view.h
@@ -1,7 +1,7 @@
#ifndef KAIJU_VIEW_H
#define KAIJU_VIEW_H
- #include <wlr/types/wlr_box.h>
+ #include <wlr/util/box.h>
#include <wlr/types/wlr_xdg_shell.h>
#include <stdbool.h>
--
2.34.1
Hi there, thanks for the patch. I've been thinking about giving some love
to kaiju and upgrating it to 0.15 fo a while. Your patch has been applied
in ef2fc30140908889550e957bf2288fc77177cd64