aboutsummaryrefslogtreecommitdiff
path: root/backend/x11/backend.c
diff options
context:
space:
mode:
Diffstat (limited to 'backend/x11/backend.c')
-rw-r--r--backend/x11/backend.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/backend/x11/backend.c b/backend/x11/backend.c
index 5d8179f3..127f003c 100644
--- a/backend/x11/backend.c
+++ b/backend/x11/backend.c
@@ -613,6 +613,23 @@ struct wlr_backend *wlr_x11_backend_create(struct wl_display *display,
x11->display_destroy.notify = handle_display_destroy;
wl_display_add_destroy_listener(display, &x11->display_destroy);
+ // Create an empty pixmap to be used as the cursor. The
+ // default GC foreground is 0, and that is what it will be
+ // filled with.
+ xcb_pixmap_t blank = xcb_generate_id(x11->xcb);
+ xcb_create_pixmap(x11->xcb, 1, blank, x11->screen->root, 1, 1);
+ xcb_gcontext_t gc = xcb_generate_id(x11->xcb);
+ xcb_create_gc(x11->xcb, gc, blank, 0, NULL);
+ xcb_rectangle_t rect = { .x = 0, .y = 0, .width = 1, .height = 1 };
+ xcb_poly_fill_rectangle(x11->xcb, blank, gc, 1, &rect);
+
+ x11->cursor = xcb_generate_id(x11->xcb);
+ xcb_create_cursor(x11->xcb, x11->cursor, blank, blank,
+ 0, 0, 0, 0, 0, 0, 0, 0);
+
+ xcb_free_gc(x11->xcb, gc);
+ xcb_free_pixmap(x11->xcb, blank);
+
return &x11->backend;
error_event: