backend/x11: hide cursor

This commit is contained in:
emersion 2018-03-31 12:07:58 -04:00
parent 96c6091f80
commit 7b88ace557
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48
3 changed files with 19 additions and 0 deletions

View File

@ -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 #ifdef WLR_HAS_XCB_XKB
const xcb_query_extension_reply_t *reply = const xcb_query_extension_reply_t *reply =
xcb_get_extension_data(x11->xcb_conn, &xcb_xkb_id); 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); wlr_egl_finish(&x11->egl);
if (x11->cursor) {
xcb_free_cursor(x11->xcb_conn, x11->cursor);
}
if (x11->xlib_conn) { if (x11->xlib_conn) {
XCloseDisplay(x11->xlib_conn); XCloseDisplay(x11->xlib_conn);
} }

View File

@ -135,6 +135,10 @@ struct wlr_output *wlr_x11_output_create(struct wlr_backend *backend) {
strlen(title), title); 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_map_window(x11->xcb_conn, output->win);
xcb_flush(x11->xcb_conn); xcb_flush(x11->xcb_conn);

View File

@ -58,6 +58,9 @@ struct wlr_x11_backend {
// The time we last received an event // The time we last received an event
xcb_timestamp_t time; xcb_timestamp_t time;
// A blank cursor
xcb_cursor_t cursor;
#ifdef WLR_HAS_XCB_XKB #ifdef WLR_HAS_XCB_XKB
bool xkb_supported; bool xkb_supported;
uint8_t xkb_base_event; uint8_t xkb_base_event;