aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Zeni <simon@bl4ckb0ne.ca>2021-09-24 09:34:51 -0400
committerSimon Zeni <simon@bl4ckb0ne.ca>2021-11-18 09:37:57 -0500
commit6d6e70b9e0e40b6d38ba9276127b869bae893d43 (patch)
tree7a459cc6e4283fd3783e66d43bc5cfd0a21b945a
parent142d10e591c0f349843f718d87b44c8ba2b33476 (diff)
examples: init wlr_output with allocator and renderer
-rw-r--r--examples/fullscreen-shell.c8
-rw-r--r--examples/multi-pointer.c12
-rw-r--r--examples/output-layout.c9
-rw-r--r--examples/pointer.c12
-rw-r--r--examples/quads.c9
-rw-r--r--examples/rotation.c9
-rw-r--r--examples/scene-graph.c14
-rw-r--r--examples/simple.c13
-rw-r--r--examples/tablet.c10
-rw-r--r--examples/touch.c12
10 files changed, 93 insertions, 15 deletions
diff --git a/examples/fullscreen-shell.c b/examples/fullscreen-shell.c
index 07320045..5a9d4c92 100644
--- a/examples/fullscreen-shell.c
+++ b/examples/fullscreen-shell.c
@@ -7,6 +7,7 @@
#include <unistd.h>
#include <wayland-server-core.h>
#include <wlr/backend.h>
+#include <wlr/render/allocator.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_compositor.h>
#include <wlr/types/wlr_fullscreen_shell_v1.h>
@@ -25,6 +26,7 @@ struct fullscreen_server {
struct wl_display *wl_display;
struct wlr_backend *backend;
struct wlr_renderer *renderer;
+ struct wlr_allocator *allocator;
struct wlr_fullscreen_shell_v1 *fullscreen_shell;
struct wl_listener present_surface;
@@ -146,6 +148,8 @@ static void server_handle_new_output(struct wl_listener *listener, void *data) {
wl_container_of(listener, server, new_output);
struct wlr_output *wlr_output = data;
+ wlr_output_init_render(wlr_output, server->allocator, server->renderer);
+
struct fullscreen_output *output =
calloc(1, sizeof(struct fullscreen_output));
output->wlr_output = wlr_output;
@@ -203,8 +207,10 @@ int main(int argc, char *argv[]) {
struct fullscreen_server server = {0};
server.wl_display = wl_display_create();
server.backend = wlr_backend_autocreate(server.wl_display);
- server.renderer = wlr_backend_get_renderer(server.backend);
+ server.renderer = wlr_renderer_autocreate(server.backend);
wlr_renderer_init_wl_display(server.renderer, server.wl_display);
+ server.allocator = wlr_allocator_autocreate(server.backend,
+ server.renderer);
wlr_compositor_create(server.wl_display, server.renderer);
diff --git a/examples/multi-pointer.c b/examples/multi-pointer.c
index 49556280..5095cb72 100644
--- a/examples/multi-pointer.c
+++ b/examples/multi-pointer.c
@@ -9,6 +9,7 @@
#include <wayland-server-core.h>
#include <wlr/backend.h>
#include <wlr/backend/session.h>
+#include <wlr/render/allocator.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_cursor.h>
#include <wlr/types/wlr_keyboard.h>
@@ -22,6 +23,8 @@
struct sample_state {
struct wl_display *display;
struct wlr_xcursor *xcursor;
+ struct wlr_renderer *renderer;
+ struct wlr_allocator *allocator;
float default_color[4];
float clear_color[4];
struct wlr_output_layout *layout;
@@ -90,7 +93,7 @@ static void output_frame_notify(struct wl_listener *listener, void *data) {
struct sample_output *output = wl_container_of(listener, output, frame);
struct sample_state *sample = output->sample;
struct wlr_output *wlr_output = output->output;
- struct wlr_renderer *renderer = wlr_backend_get_renderer(wlr_output->backend);
+ struct wlr_renderer *renderer = sample->renderer;
wlr_output_attach_render(wlr_output, NULL);
@@ -144,6 +147,9 @@ static void output_remove_notify(struct wl_listener *listener, void *data) {
static void new_output_notify(struct wl_listener *listener, void *data) {
struct wlr_output *output = data;
struct sample_state *sample = wl_container_of(listener, sample, new_output);
+
+ wlr_output_init_render(output, sample->allocator, sample->renderer);
+
struct sample_output *sample_output = calloc(1, sizeof(struct sample_output));
sample_output->output = output;
sample_output->sample = sample;
@@ -269,6 +275,10 @@ int main(int argc, char *argv[]) {
if (!wlr) {
exit(1);
}
+
+ state.renderer = wlr_renderer_autocreate(wlr);
+ state.allocator = wlr_allocator_autocreate(wlr, state.renderer);
+
wl_list_init(&state.cursors);
wl_list_init(&state.pointers);
wl_list_init(&state.outputs);
diff --git a/examples/output-layout.c b/examples/output-layout.c
index 356d5d56..bc5cb7e9 100644
--- a/examples/output-layout.c
+++ b/examples/output-layout.c
@@ -11,6 +11,7 @@
#include <wayland-server-core.h>
#include <wlr/backend.h>
#include <wlr/backend/session.h>
+#include <wlr/render/allocator.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_keyboard.h>
#include <wlr/types/wlr_matrix.h>
@@ -27,6 +28,7 @@ struct sample_state {
struct wl_listener new_output;
struct wl_listener new_input;
struct wlr_renderer *renderer;
+ struct wlr_allocator *allocator;
struct wlr_texture *cat_texture;
struct wlr_output_layout *layout;
float x_offs, y_offs;
@@ -158,6 +160,9 @@ static void output_remove_notify(struct wl_listener *listener, void *data) {
static void new_output_notify(struct wl_listener *listener, void *data) {
struct wlr_output *output = data;
struct sample_state *sample = wl_container_of(listener, sample, new_output);
+
+ wlr_output_init_render(output, sample->allocator, sample->renderer);
+
struct sample_output *sample_output = calloc(1, sizeof(struct sample_output));
wlr_output_layout_add_auto(sample->layout, output);
sample_output->output = output;
@@ -273,11 +278,13 @@ int main(int argc, char *argv[]) {
wl_signal_add(&wlr->events.new_input, &state.new_input);
state.new_input.notify = new_input_notify;
- state.renderer = wlr_backend_get_renderer(wlr);
+ state.renderer = wlr_renderer_autocreate(wlr);
state.cat_texture = wlr_texture_from_pixels(state.renderer,
DRM_FORMAT_ABGR8888, cat_tex.width * 4, cat_tex.width, cat_tex.height,
cat_tex.pixel_data);
+ state.allocator = wlr_allocator_autocreate(wlr, state.renderer);
+
if (!wlr_backend_start(wlr)) {
wlr_log(WLR_ERROR, "Failed to start backend");
wlr_backend_destroy(wlr);
diff --git a/examples/pointer.c b/examples/pointer.c
index 1abdf1cf..bf3701a4 100644
--- a/examples/pointer.c
+++ b/examples/pointer.c
@@ -9,6 +9,7 @@
#include <wayland-server-core.h>
#include <wlr/backend.h>
#include <wlr/backend/session.h>
+#include <wlr/render/allocator.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_cursor.h>
#include <wlr/types/wlr_keyboard.h>
@@ -24,6 +25,8 @@
struct sample_state {
struct wl_display *display;
struct compositor_state *compositor;
+ struct wlr_renderer *renderer;
+ struct wlr_allocator *allocator;
struct wlr_xcursor_manager *xcursor_manager;
struct wlr_cursor *cursor;
double cur_x, cur_y;
@@ -95,7 +98,7 @@ static void output_frame_notify(struct wl_listener *listener, void *data) {
struct sample_output *sample_output = wl_container_of(listener, sample_output, frame);
struct sample_state *state = sample_output->state;
struct wlr_output *wlr_output = sample_output->output;
- struct wlr_renderer *renderer = wlr_backend_get_renderer(wlr_output->backend);
+ struct wlr_renderer *renderer = state->renderer;
assert(renderer);
wlr_output_attach_render(wlr_output, NULL);
@@ -250,6 +253,9 @@ static void output_remove_notify(struct wl_listener *listener, void *data) {
static void new_output_notify(struct wl_listener *listener, void *data) {
struct wlr_output *output = data;
struct sample_state *sample = wl_container_of(listener, sample, new_output);
+
+ wlr_output_init_render(output, sample->allocator, sample->renderer);
+
struct sample_output *sample_output = calloc(1, sizeof(struct sample_output));
sample_output->output = output;
sample_output->state = sample;
@@ -331,6 +337,10 @@ int main(int argc, char *argv[]) {
if (!wlr) {
exit(1);
}
+
+ state.renderer = wlr_renderer_autocreate(wlr);
+ state.allocator = wlr_allocator_autocreate(wlr, state.renderer);
+
state.cursor = wlr_cursor_create();
state.layout = wlr_output_layout_create();
wlr_cursor_attach_output_layout(state.cursor, state.layout);
diff --git a/examples/quads.c b/examples/quads.c
index 6696ef7c..d74ef25e 100644
--- a/examples/quads.c
+++ b/examples/quads.c
@@ -9,6 +9,7 @@
#include <unistd.h>
#include <wayland-server-core.h>
#include <wlr/backend.h>
+#include <wlr/render/allocator.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_keyboard.h>
#include <wlr/types/wlr_output.h>
@@ -24,6 +25,7 @@ struct sample_state {
struct wl_listener new_input;
struct timespec last_frame;
struct wlr_renderer *renderer;
+ struct wlr_allocator *allocator;
struct wl_list outputs;
};
@@ -103,6 +105,9 @@ static void output_remove_notify(struct wl_listener *listener, void *data) {
static void new_output_notify(struct wl_listener *listener, void *data) {
struct wlr_output *output = data;
struct sample_state *sample = wl_container_of(listener, sample, new_output);
+
+ wlr_output_init_render(output, sample->allocator, sample->renderer);
+
struct sample_output *sample_output = calloc(1, sizeof(struct sample_output));
struct wlr_output_mode *mode = wlr_output_preferred_mode(output);
@@ -195,13 +200,15 @@ int main(int argc, char *argv[]) {
state.new_input.notify = new_input_notify;
clock_gettime(CLOCK_MONOTONIC, &state.last_frame);
- state.renderer = wlr_backend_get_renderer(wlr);
+ state.renderer = wlr_renderer_autocreate(wlr);
if (!state.renderer) {
wlr_log(WLR_ERROR, "Could not start compositor, OOM");
wlr_backend_destroy(wlr);
exit(EXIT_FAILURE);
}
+ state.allocator = wlr_allocator_autocreate(wlr, state.renderer);
+
if (!wlr_backend_start(wlr)) {
wlr_log(WLR_ERROR, "Failed to start backend");
wlr_backend_destroy(wlr);
diff --git a/examples/rotation.c b/examples/rotation.c
index ff34630e..cc1cfbb5 100644
--- a/examples/rotation.c
+++ b/examples/rotation.c
@@ -10,6 +10,7 @@
#include <unistd.h>
#include <wayland-server-core.h>
#include <wlr/backend.h>
+#include <wlr/render/allocator.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_keyboard.h>
#include <wlr/types/wlr_output.h>
@@ -25,6 +26,7 @@ struct sample_state {
struct wl_listener new_input;
struct timespec last_frame;
struct wlr_renderer *renderer;
+ struct wlr_allocator *allocator;
struct wlr_texture *cat_texture;
struct wl_list outputs;
enum wl_output_transform transform;
@@ -105,6 +107,9 @@ static void output_remove_notify(struct wl_listener *listener, void *data) {
static void new_output_notify(struct wl_listener *listener, void *data) {
struct wlr_output *output = data;
struct sample_state *sample = wl_container_of(listener, sample, new_output);
+
+ wlr_output_init_render(output, sample->allocator, sample->renderer);
+
struct sample_output *sample_output = calloc(1, sizeof(struct sample_output));
sample_output->x_offs = sample_output->y_offs = 0;
sample_output->x_vel = sample_output->y_vel = 128;
@@ -245,7 +250,7 @@ int main(int argc, char *argv[]) {
state.new_input.notify = new_input_notify;
clock_gettime(CLOCK_MONOTONIC, &state.last_frame);
- state.renderer = wlr_backend_get_renderer(wlr);
+ state.renderer = wlr_renderer_autocreate(wlr);
if (!state.renderer) {
wlr_log(WLR_ERROR, "Could not start compositor, OOM");
wlr_backend_destroy(wlr);
@@ -259,6 +264,8 @@ int main(int argc, char *argv[]) {
exit(EXIT_FAILURE);
}
+ state.allocator = wlr_allocator_autocreate(wlr, state.renderer);
+
if (!wlr_backend_start(wlr)) {
wlr_log(WLR_ERROR, "Failed to start backend");
wlr_backend_destroy(wlr);
diff --git a/examples/scene-graph.c b/examples/scene-graph.c
index d5c23a16..bd2003f5 100644
--- a/examples/scene-graph.c
+++ b/examples/scene-graph.c
@@ -8,6 +8,7 @@
#include <unistd.h>
#include <wayland-server-core.h>
#include <wlr/backend.h>
+#include <wlr/render/allocator.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_compositor.h>
#include <wlr/types/wlr_output.h>
@@ -25,6 +26,8 @@ static const int border_width = 3;
struct server {
struct wl_display *display;
struct wlr_backend *backend;
+ struct wlr_renderer *renderer;
+ struct wlr_allocator *allocator;
struct wlr_scene *scene;
struct wl_list outputs;
@@ -73,6 +76,8 @@ static void server_handle_new_output(struct wl_listener *listener, void *data) {
struct server *server = wl_container_of(listener, server, new_output);
struct wlr_output *wlr_output = data;
+ wlr_output_init_render(wlr_output, server->allocator, server->renderer);
+
struct output *output =
calloc(1, sizeof(struct output));
output->wlr = wlr_output;
@@ -161,11 +166,14 @@ int main(int argc, char *argv[]) {
server.backend = wlr_backend_autocreate(server.display);
server.scene = wlr_scene_create();
- struct wlr_renderer *renderer = wlr_backend_get_renderer(server.backend);
- wlr_renderer_init_wl_display(renderer, server.display);
+ server.renderer = wlr_renderer_autocreate(server.backend);
+ wlr_renderer_init_wl_display(server.renderer, server.display);
+
+ server.allocator = wlr_allocator_autocreate(server.backend,
+ server.renderer);
struct wlr_compositor *compositor =
- wlr_compositor_create(server.display, renderer);
+ wlr_compositor_create(server.display, server.renderer);
wlr_xdg_shell_create(server.display);
diff --git a/examples/simple.c b/examples/simple.c
index 9135d163..94f3abe0 100644
--- a/examples/simple.c
+++ b/examples/simple.c
@@ -7,6 +7,7 @@
#include <wayland-server-core.h>
#include <wlr/backend.h>
#include <wlr/backend/session.h>
+#include <wlr/render/allocator.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_output.h>
#include <wlr/types/wlr_input_device.h>
@@ -18,6 +19,8 @@ struct sample_state {
struct wl_display *display;
struct wl_listener new_output;
struct wl_listener new_input;
+ struct wlr_renderer *renderer;
+ struct wlr_allocator *allocator;
struct timespec last_frame;
float color[4];
int dec;
@@ -61,8 +64,7 @@ static void output_frame_notify(struct wl_listener *listener, void *data) {
wlr_output_attach_render(wlr_output, NULL);
- struct wlr_renderer *renderer =
- wlr_backend_get_renderer(wlr_output->backend);
+ struct wlr_renderer *renderer = sample->renderer;
wlr_renderer_begin(renderer, wlr_output->width, wlr_output->height);
wlr_renderer_clear(renderer, sample->color);
wlr_renderer_end(renderer);
@@ -84,6 +86,9 @@ static void new_output_notify(struct wl_listener *listener, void *data) {
struct wlr_output *output = data;
struct sample_state *sample =
wl_container_of(listener, sample, new_output);
+
+ wlr_output_init_render(output, sample->allocator, sample->renderer);
+
struct sample_output *sample_output =
calloc(1, sizeof(struct sample_output));
sample_output->output = output;
@@ -171,6 +176,10 @@ int main(void) {
if (!backend) {
exit(1);
}
+
+ state.renderer = wlr_renderer_autocreate(backend);
+ state.allocator = wlr_allocator_autocreate(backend, state.renderer);
+
wl_signal_add(&backend->events.new_output, &state.new_output);
state.new_output.notify = new_output_notify;
wl_signal_add(&backend->events.new_input, &state.new_input);
diff --git a/examples/tablet.c b/examples/tablet.c
index 5d0e8dcc..234bfb99 100644
--- a/examples/tablet.c
+++ b/examples/tablet.c
@@ -8,6 +8,7 @@
#include <wayland-server-core.h>
#include <wlr/backend.h>
#include <wlr/backend/session.h>
+#include <wlr/render/allocator.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_matrix.h>
#include <wlr/types/wlr_output.h>
@@ -22,6 +23,7 @@
struct sample_state {
struct wl_display *display;
struct wlr_renderer *renderer;
+ struct wlr_allocator *allocator;
bool proximity, tap, button;
double distance;
double pressure;
@@ -237,6 +239,9 @@ static void output_remove_notify(struct wl_listener *listener, void *data) {
static void new_output_notify(struct wl_listener *listener, void *data) {
struct wlr_output *output = data;
struct sample_state *sample = wl_container_of(listener, sample, new_output);
+
+ wlr_output_init_render(output, sample->allocator, sample->renderer);
+
struct sample_output *sample_output = calloc(1, sizeof(struct sample_output));
sample_output->output = output;
sample_output->sample = sample;
@@ -361,11 +366,14 @@ int main(int argc, char *argv[]) {
state.new_input.notify = new_input_notify;
clock_gettime(CLOCK_MONOTONIC, &state.last_frame);
- state.renderer = wlr_backend_get_renderer(wlr);
+ state.renderer = wlr_renderer_autocreate(wlr);
if (!state.renderer) {
wlr_log(WLR_ERROR, "Could not start compositor, OOM");
exit(EXIT_FAILURE);
}
+
+ state.allocator = wlr_allocator_autocreate(wlr, state.renderer);
+
if (!wlr_backend_start(wlr)) {
wlr_log(WLR_ERROR, "Failed to start backend");
wlr_backend_destroy(wlr);
diff --git a/examples/touch.c b/examples/touch.c
index 0c9cd2b4..ae2dcf8f 100644
--- a/examples/touch.c
+++ b/examples/touch.c
@@ -10,8 +10,9 @@
#include <wayland-server-core.h>
#include <wlr/backend.h>
#include <wlr/backend/session.h>
-#include <wlr/types/wlr_output.h>
+#include <wlr/render/allocator.h>
#include <wlr/render/wlr_renderer.h>
+#include <wlr/types/wlr_output.h>
#include <wlr/types/wlr_input_device.h>
#include <wlr/types/wlr_keyboard.h>
#include <wlr/types/wlr_matrix.h>
@@ -23,6 +24,7 @@
struct sample_state {
struct wl_display *display;
struct wlr_renderer *renderer;
+ struct wlr_allocator *allocator;
struct wlr_texture *cat_texture;
struct wl_list touch_points;
struct timespec last_frame;
@@ -148,6 +150,9 @@ static void output_remove_notify(struct wl_listener *listener, void *data) {
static void new_output_notify(struct wl_listener *listener, void *data) {
struct wlr_output *output = data;
struct sample_state *sample = wl_container_of(listener, sample, new_output);
+
+ wlr_output_init_render(output, sample->allocator, sample->renderer);
+
struct sample_output *sample_output = calloc(1, sizeof(struct sample_output));
sample_output->output = output;
sample_output->sample = sample;
@@ -254,8 +259,7 @@ int main(int argc, char *argv[]) {
state.new_input.notify = new_input_notify;
clock_gettime(CLOCK_MONOTONIC, &state.last_frame);
-
- state.renderer = wlr_backend_get_renderer(wlr);
+ state.renderer = wlr_renderer_autocreate(wlr);
if (!state.renderer) {
wlr_log(WLR_ERROR, "Could not start compositor, OOM");
exit(EXIT_FAILURE);
@@ -268,6 +272,8 @@ int main(int argc, char *argv[]) {
exit(EXIT_FAILURE);
}
+ state.allocator = wlr_allocator_autocreate(wlr, state.renderer);
+
if (!wlr_backend_start(wlr)) {
wlr_log(WLR_ERROR, "Failed to start backend");
wlr_backend_destroy(wlr);