diff options
Diffstat (limited to 'backend/x11')
-rw-r--r-- | backend/x11/backend.c | 12 | ||||
-rw-r--r-- | backend/x11/output.c | 4 |
2 files changed, 16 insertions, 0 deletions
diff --git a/backend/x11/backend.c b/backend/x11/backend.c index f598aea1..59b75a03 100644 --- a/backend/x11/backend.c +++ b/backend/x11/backend.c @@ -171,6 +171,15 @@ static bool wlr_x11_backend_start(struct wlr_backend *backend) { } } + // create a blank cursor + xcb_pixmap_t pix = xcb_generate_id(x11->xcb_conn); + xcb_create_pixmap(x11->xcb_conn, 1, pix, x11->screen->root, 1, 1); + + x11->cursor = xcb_generate_id(x11->xcb_conn); + xcb_create_cursor(x11->xcb_conn, x11->cursor, pix, pix, 0, 0, 0, 0, 0, 0, + 0, 0); + xcb_free_pixmap(x11->xcb_conn, pix); + #ifdef WLR_HAS_XCB_XKB const xcb_query_extension_reply_t *reply = xcb_get_extension_data(x11->xcb_conn, &xcb_xkb_id); @@ -239,6 +248,9 @@ static void wlr_x11_backend_destroy(struct wlr_backend *backend) { wlr_egl_finish(&x11->egl); + if (x11->cursor) { + xcb_free_cursor(x11->xcb_conn, x11->cursor); + } if (x11->xlib_conn) { XCloseDisplay(x11->xlib_conn); } diff --git a/backend/x11/output.c b/backend/x11/output.c index 4ccabd51..4a8ac84c 100644 --- a/backend/x11/output.c +++ b/backend/x11/output.c @@ -136,6 +136,10 @@ struct wlr_output *wlr_x11_output_create(struct wlr_backend *backend) { strlen(title), title); } + uint32_t cursor_values[] = { x11->cursor }; + xcb_change_window_attributes(x11->xcb_conn, output->win, XCB_CW_CURSOR, + cursor_values); + xcb_map_window(x11->xcb_conn, output->win); xcb_flush(x11->xcb_conn); |