From: Consolatis <35009135+Consolatis@users.noreply.github.com> Date: Sat, 13 Apr 2024 08:01:30 +0000 (+0200) Subject: server: don't create headless backend twice X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=55138dbe0eefb37a052036500406e45423e3639a;p=proto%2Flabwc.git server: don't create headless backend twice This may happen when running with WLR_BACKENDS=headless. Fixes: #1618 --- diff --git a/src/server.c b/src/server.c index ceac9cec..4210f069 100644 --- a/src/server.c +++ b/src/server.c @@ -278,6 +278,15 @@ static const char helpful_seat_error_message[] = "If the above does not work, try running with `WLR_RENDERER=pixman labwc` in\n" "order to use the software rendering fallback\n"; +static void +get_headless_backend(struct wlr_backend *backend, void *data) +{ + if (wlr_backend_is_headless(backend)) { + struct wlr_backend **headless = data; + *headless = backend; + } +} + void server_init(struct server *server) { @@ -327,7 +336,16 @@ server_init(struct server *server) } /* Create headless backend to enable adding virtual outputs later on */ - server->headless.backend = wlr_headless_backend_create(server->wl_display); + wlr_multi_for_each_backend(server->backend, + get_headless_backend, &server->headless.backend); + + if (!server->headless.backend) { + wlr_log(WLR_DEBUG, "manually creating headless backend"); + server->headless.backend = wlr_headless_backend_create(server->wl_display); + } else { + wlr_log(WLR_DEBUG, "headless backend already exists"); + } + if (!server->headless.backend) { wlr_log(WLR_ERROR, "unable to create headless backend"); exit(EXIT_FAILURE);