From 7abb227617f4dc5563ece0e37b8d143f901a64d6 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 11 Oct 2023 11:27:59 +0200 Subject: [PATCH] render: take event loop as input when creating renderer Some renderers will need access to the event loop for async GPU uploads. --- backend/drm/renderer.c | 3 ++- include/render/wlr_renderer.h | 2 +- render/wlr_renderer.c | 10 +++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/backend/drm/renderer.c b/backend/drm/renderer.c index 321d583c7..cc7033c8d 100644 --- a/backend/drm/renderer.c +++ b/backend/drm/renderer.c @@ -13,7 +13,8 @@ bool init_drm_renderer(struct wlr_drm_backend *drm, struct wlr_drm_renderer *renderer) { - renderer->wlr_rend = renderer_autocreate_with_drm_fd(drm->fd); + renderer->wlr_rend = renderer_autocreate_with_drm_fd(drm->fd, + wl_display_get_event_loop(drm->display)); if (!renderer->wlr_rend) { wlr_log(WLR_ERROR, "Failed to create renderer"); return false; diff --git a/include/render/wlr_renderer.h b/include/render/wlr_renderer.h index a8777bc01..83508a99f 100644 --- a/include/render/wlr_renderer.h +++ b/include/render/wlr_renderer.h @@ -6,7 +6,7 @@ /** * Automatically select and create a renderer suitable for the DRM FD. */ -struct wlr_renderer *renderer_autocreate_with_drm_fd(int drm_fd); +struct wlr_renderer *renderer_autocreate_with_drm_fd(int drm_fd, struct wl_event_loop *loop); /** * Get the supported render formats. Buffers allocated with a format from this * list may be attached via wlr_renderer_begin_with_buffer. diff --git a/render/wlr_renderer.c b/render/wlr_renderer.c index 7f571286a..89f81abd8 100644 --- a/render/wlr_renderer.c +++ b/render/wlr_renderer.c @@ -229,7 +229,8 @@ static bool has_render_node(struct wlr_backend *backend) { return has_render_node; } -static struct wlr_renderer *renderer_autocreate(struct wlr_backend *backend, int drm_fd) { +static struct wlr_renderer *renderer_autocreate(struct wlr_backend *backend, int drm_fd, + struct wl_event_loop *loop) { const char *renderer_options[] = { "auto", "gles2", @@ -297,14 +298,13 @@ out: return renderer; } -struct wlr_renderer *renderer_autocreate_with_drm_fd(int drm_fd) { +struct wlr_renderer *renderer_autocreate_with_drm_fd(int drm_fd, struct wl_event_loop *loop) { assert(drm_fd >= 0); - - return renderer_autocreate(NULL, drm_fd); + return renderer_autocreate(NULL, drm_fd, loop); } struct wlr_renderer *wlr_renderer_autocreate(struct wlr_backend *backend) { - return renderer_autocreate(backend, -1); + return renderer_autocreate(backend, -1, backend->event_loop); } int wlr_renderer_get_drm_fd(struct wlr_renderer *r) {