render: take event loop as input when creating renderer

Some renderers will need access to the event loop for async GPU
uploads.
This commit is contained in:
Simon Ser 2023-10-11 11:27:59 +02:00
parent 3b3640dda4
commit 7abb227617
3 changed files with 8 additions and 7 deletions

View file

@ -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;

View file

@ -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.

View file

@ -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) {