Merge pull request #792 from emersion/x11-backend-blank-cursor
backend/x11: hide cursor
This commit is contained in:
		
						commit
						8b37e8f67a
					
				|  | @ -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); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -136,6 +136,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); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue