]> git.mdlowis.com Git - proto/labwc.git/commitdiff
server: don't create headless backend twice
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Sat, 13 Apr 2024 08:01:30 +0000 (10:01 +0200)
committerJohan Malm <johanmalm@users.noreply.github.com>
Sat, 13 Apr 2024 18:38:51 +0000 (19:38 +0100)
This may happen when running with WLR_BACKENDS=headless.

Fixes: #1618
src/server.c

index ceac9cec1a59d8245d8e559dbb8ed0e47224115f..4210f069d69a82baefd6f952f4eb00b8edaa1239 100644 (file)
@@ -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);