mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-12-16 08:56:26 -05:00
backend/x11: set a blank cursor rather than hiding globally
This actually simplifies the logic since we no longer have to wait for enter/leave events, and also improves the UX when e.g. handling a crash with gdb attached. See #2659
This commit is contained in:
parent
04d89a8bc5
commit
966e653935
4 changed files with 21 additions and 34 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue