aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/backend.c7
-rw-r--r--backend/meson.build1
-rw-r--r--backend/x11/backend.c30
-rw-r--r--include/backend/x11.h8
-rw-r--r--include/wlr/backend/x11.h11
5 files changed, 54 insertions, 3 deletions
diff --git a/backend/backend.c b/backend/backend.c
index 88b9dfbc..21f342ad 100644
--- a/backend/backend.c
+++ b/backend/backend.c
@@ -10,6 +10,7 @@
#include <wlr/backend/drm.h>
#include <wlr/backend/libinput.h>
#include <wlr/backend/wayland.h>
+#include <wlr/backend/x11.h>
#include <wlr/backend/multi.h>
#include <wlr/util/log.h>
@@ -77,9 +78,9 @@ struct wlr_backend *wlr_backend_autocreate(struct wl_display *display) {
}
}
- if (getenv("DISPLAY")) {
- wlr_log(L_ERROR, "X11 backend is not implemented"); // TODO
- return NULL;
+ const char *x11_display = getenv("DISPLAY");
+ if (x11_display) {
+ return wlr_x11_backend_create(x11_display);
}
// Attempt DRM+libinput
diff --git a/backend/meson.build b/backend/meson.build
index a3cb7b64..9e3b6fed 100644
--- a/backend/meson.build
+++ b/backend/meson.build
@@ -22,6 +22,7 @@ backend_files = files(
'wayland/registry.c',
'wayland/wl_seat.c',
'wayland/os-compatibility.c',
+ 'x11/backend.c',
)
if systemd.found()
diff --git a/backend/x11/backend.c b/backend/x11/backend.c
new file mode 100644
index 00000000..be022a7a
--- /dev/null
+++ b/backend/x11/backend.c
@@ -0,0 +1,30 @@
+#include <stdbool.h>
+#include <wlr/backend/interface.h>
+#include <wlr/backend/x11.h>
+#include <wlr/egl.h>
+#include "backend/x11.h"
+
+struct wlr_backend *wlr_x11_backend_create(const char *display) {
+ return NULL;
+}
+
+static bool wlr_x11_backend_start(struct wlr_backend *backend) {
+ return false;
+}
+
+static void wlr_x11_backend_destroy(struct wlr_backend *backend) {
+}
+
+struct wlr_egl *wlr_x11_backend_get_egl(struct wlr_backend *backend) {
+ return NULL;
+}
+
+static struct wlr_backend_impl backend_impl = {
+ .start = wlr_x11_backend_start,
+ .destroy = wlr_x11_backend_destroy,
+ .get_egl = wlr_x11_backend_get_egl,
+};
+
+bool wlr_backend_is_x11(struct wlr_backend *backend) {
+ return backend->impl == &backend_impl;
+}
diff --git a/include/backend/x11.h b/include/backend/x11.h
new file mode 100644
index 00000000..2f319672
--- /dev/null
+++ b/include/backend/x11.h
@@ -0,0 +1,8 @@
+#ifndef WLR_X11_H
+#define WLR_X11_H
+
+struct wlr_x11_backend {
+ struct wlr_backend backend;
+};
+
+#endif
diff --git a/include/wlr/backend/x11.h b/include/wlr/backend/x11.h
new file mode 100644
index 00000000..28d027c5
--- /dev/null
+++ b/include/wlr/backend/x11.h
@@ -0,0 +1,11 @@
+#ifndef WLR_BACKEND_X11_H
+#define WLR_BACKEND_X11_H
+
+#include <wlr/backend.h>
+#include <stdbool.h>
+
+struct wlr_backend *wlr_x11_backend_create(const char *display);
+
+bool wlr_backend_is_x11(struct wlr_backend *backend);
+
+#endif