diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/backend/x11.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/include/backend/x11.h b/include/backend/x11.h index 72710f6c..92a29725 100644 --- a/include/backend/x11.h +++ b/include/backend/x11.h @@ -6,15 +6,23 @@ #include <wlr/render/egl.h> #include <X11/Xlib-xcb.h> #include <xcb/xcb.h> +#include <wlr/interfaces/wlr_input_device.h> +#include <wlr/interfaces/wlr_output.h> + +#define XCB_EVENT_RESPONSE_TYPE_MASK 0x7f struct wlr_x11_backend; struct wlr_x11_output { struct wlr_output wlr_output; struct wlr_x11_backend *x11; + struct wl_list link; // wlr_x11_backend::outputs xcb_window_t win; EGLSurface surf; + + struct wl_event_source *frame_timer; + int frame_delay; }; struct wlr_x11_backend { @@ -25,7 +33,8 @@ struct wlr_x11_backend { xcb_connection_t *xcb_conn; xcb_screen_t *screen; - struct wlr_x11_output output; + size_t requested_outputs; + struct wl_list outputs; // wlr_x11_output::link struct wlr_keyboard keyboard; struct wlr_input_device keyboard_dev; @@ -36,7 +45,6 @@ struct wlr_x11_backend { struct wlr_egl egl; struct wlr_renderer *renderer; struct wl_event_source *event_source; - struct wl_event_source *frame_timer; struct { xcb_atom_t wm_protocols; @@ -57,4 +65,16 @@ struct wlr_x11_backend { struct wl_listener display_destroy; }; +struct wlr_x11_output *x11_output_from_window_id(struct wlr_x11_backend *x11, + xcb_window_t window); + +const struct wlr_input_device_impl input_device_impl; + +bool x11_handle_input_event(struct wlr_x11_backend *x11, + xcb_generic_event_t *event); + +struct wlr_x11_output *x11_output_create(struct wlr_x11_backend *x11); +void x11_output_handle_configure_notify(struct wlr_x11_output *output, + xcb_configure_notify_event_t *event); + #endif |