aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-09-29 10:12:58 -0400
committerGitHub <noreply@github.com>2017-09-29 10:12:58 -0400
commit285a109d416c9bcdc0c47dfb1b9ce4e474cd34dd (patch)
tree76277fbcbd76b5a376d9ba49b21be614b3327b42 /include
parent6479fb27be364ef6ee7c5289c18d015ec3d8c2f3 (diff)
parent1b18b0a27d285270c12e57781738c48377d5529b (diff)
Merge pull request #164 from ascent12/x11-backend
X11 backend
Diffstat (limited to 'include')
-rw-r--r--include/backend/x11.h56
-rw-r--r--include/wlr/backend/x11.h13
-rw-r--r--include/wlr/egl.h2
3 files changed, 70 insertions, 1 deletions
diff --git a/include/backend/x11.h b/include/backend/x11.h
new file mode 100644
index 00000000..b4284b63
--- /dev/null
+++ b/include/backend/x11.h
@@ -0,0 +1,56 @@
+#ifndef WLR_X11_H
+#define WLR_X11_H
+
+#include <stdbool.h>
+#include <xcb/xcb.h>
+#include <X11/Xlib-xcb.h>
+#include <wayland-server.h>
+#include <wlr/egl.h>
+#include <wlr/types/wlr_output.h>
+#include <wlr/types/wlr_input_device.h>
+
+struct wlr_x11_backend;
+
+struct wlr_x11_output {
+ struct wlr_output wlr_output;
+ struct wlr_x11_backend *x11;
+
+ xcb_window_t win;
+ EGLSurface surf;
+};
+
+struct wlr_x11_atom {
+ xcb_intern_atom_cookie_t cookie;
+ xcb_intern_atom_reply_t *reply;
+};
+
+struct wlr_x11_backend {
+ struct wlr_backend backend;
+ struct wl_display *wl_display;
+
+ Display *xlib_conn;
+ xcb_connection_t *xcb_conn;
+ xcb_screen_t *screen;
+
+ struct wlr_x11_output output;
+
+ struct wlr_keyboard keyboard;
+ struct wlr_input_device keyboard_dev;
+
+ struct wlr_pointer pointer;
+ struct wlr_input_device pointer_dev;
+
+ struct wlr_egl egl;
+ struct wl_event_source *event_source;
+ struct wl_event_source *frame_timer;
+
+ struct {
+ struct wlr_x11_atom wm_protocols;
+ struct wlr_x11_atom wm_delete_window;
+ } atoms;
+
+ // The time we last received an event
+ xcb_timestamp_t time;
+};
+
+#endif
diff --git a/include/wlr/backend/x11.h b/include/wlr/backend/x11.h
new file mode 100644
index 00000000..3901649b
--- /dev/null
+++ b/include/wlr/backend/x11.h
@@ -0,0 +1,13 @@
+#ifndef WLR_BACKEND_X11_H
+#define WLR_BACKEND_X11_H
+
+#include <stdbool.h>
+#include <wayland-server.h>
+#include <wlr/backend.h>
+
+struct wlr_backend *wlr_x11_backend_create(struct wl_display *display,
+ const char *x11_display);
+
+bool wlr_backend_is_x11(struct wlr_backend *backend);
+
+#endif
diff --git a/include/wlr/egl.h b/include/wlr/egl.h
index b37317a5..25329175 100644
--- a/include/wlr/egl.h
+++ b/include/wlr/egl.h
@@ -30,7 +30,7 @@ struct wlr_egl {
* Initializes an egl context for the given platform and remote display.
* Will attempt to load all possibly required api functions.
*/
-bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, void *display);
+bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, EGLint visual_id, void *display);
/**
* Frees all related egl resources, makes the context not-current and