backend: create renderer and allocator in wlr_backend_autocreate

Instead of ensuring the renderer and allocator are initialized in each
backend, do it in wlr_backend_autocreate. This allows compositors to
create backends without any renderer/allocator if they side-step
wlr_backend_autocreate.

Since the wlr_backend_get_renderer and backend_get_allocator end up
calling wlr_renderer_autocreate and wlr_allocator_autocreate, it sounds
like a good idea to centralize all of the opimionated bits in one place.
This commit is contained in:
Simon Ser 2021-09-28 13:00:25 +02:00 committed by Simon Zeni
parent 20d9448257
commit 3d0848daae
5 changed files with 19 additions and 35 deletions

View file

@ -9,10 +9,8 @@
#include <wlr/render/wlr_renderer.h>
#include <wlr/util/log.h>
#include <xf86drm.h>
#include "backend/backend.h"
#include "backend/headless.h"
#include "render/drm_format_set.h"
#include "render/wlr_renderer.h"
#include "util/signal.h"
struct wlr_headless_backend *headless_backend_from_backend(
@ -137,11 +135,6 @@ static bool backend_init(struct wlr_headless_backend *backend,
wl_signal_add(&renderer->events.destroy, &backend->parent_renderer_destroy);
}
if (backend_get_allocator(&backend->backend) == NULL) {
wlr_log(WLR_ERROR, "Failed to create allocator");
return false;
}
backend->display_destroy.notify = handle_display_destroy;
wl_display_add_destroy_listener(display, &backend->display_destroy);