aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2021-12-19 16:39:57 +0100
committerSimon Zeni <simon@bl4ckb0ne.ca>2021-12-20 13:56:09 +0000
commitec2845750862cc0b175bef59de4305f6da91960a (patch)
tree4ad5a8988cfec91aa5bb99f83f36db7001fbcbae
parentb5a019d5754064788471e9eba4ee9354c7cc4cd5 (diff)
backend: error out in autocreate without libinput support
The libinput backend is now optional. However, this means that a user building wlroots without the correct libinput dependencies will end up with a compositor which doesn't respond to input events. wlr_backend_autocreate is supposed to return a sensible setup, so in this case let's just error out and explain what happened. Users can suppress the check by setting WLR_LIBINPUT_NO_DEVICES=1 (already used to suppress the zero input device case inside the libinput backend). Compositors which really want to create a bare DRM backend can easily create it manually instead of using wlr_backend_autocreate.
-rw-r--r--backend/backend.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/backend/backend.c b/backend/backend.c
index 24150b13..bfb43ba0 100644
--- a/backend/backend.c
+++ b/backend/backend.c
@@ -364,6 +364,19 @@ struct wlr_backend *wlr_backend_autocreate(struct wl_display *display) {
return NULL;
}
wlr_multi_backend_add(backend, libinput);
+#else
+ const char *no_devs = getenv("WLR_LIBINPUT_NO_DEVICES");
+ if (no_devs && strcmp(no_devs, "1") == 0) {
+ wlr_log(WLR_INFO, "WLR_LIBINPUT_NO_DEVICES is set, "
+ "starting without libinput backend");
+ } else {
+ wlr_log(WLR_ERROR, "libinput support is not compiled in, "
+ "refusing to start");
+ wlr_log(WLR_ERROR, "Set WLR_LIBINPUT_NO_DEVICES=1 to suppress this check");
+ wlr_session_destroy(multi->session);
+ wlr_backend_destroy(backend);
+ return NULL;
+ }
#endif
#if WLR_HAS_DRM_BACKEND