diff --git a/backend/headless/backend.c b/backend/headless/backend.c index 02e3774a..ba5fde80 100644 --- a/backend/headless/backend.c +++ b/backend/headless/backend.c @@ -120,6 +120,14 @@ static bool backend_init(struct wlr_headless_backend *backend, wl_list_init(&backend->input_devices); backend->allocator = allocator; + + if (renderer == NULL) { + renderer = wlr_renderer_autocreate(&backend->backend); + if (!renderer) { + wlr_log(WLR_ERROR, "Failed to create renderer"); + return false; + } + } backend->renderer = renderer; const struct wlr_drm_format_set *formats = @@ -219,21 +227,13 @@ struct wlr_backend *wlr_headless_backend_create(struct wl_display *display) { goto error_dup; } - struct wlr_renderer *renderer = wlr_renderer_autocreate(&backend->backend); - if (!renderer) { - wlr_log(WLR_ERROR, "Failed to create renderer"); - goto error_renderer; - } - - if (!backend_init(backend, display, &gbm_alloc->base, renderer)) { + if (!backend_init(backend, display, &gbm_alloc->base, NULL)) { goto error_init; } return &backend->backend; error_init: - wlr_renderer_destroy(renderer); -error_renderer: wlr_allocator_destroy(&gbm_alloc->base); error_dup: close(backend->drm_fd);