66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
| /* SPDX-License-Identifier: MIT OR X11
 | |
|  *
 | |
|  * Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
 | |
|  */
 | |
| #ifndef __XNEST__XCB_H
 | |
| #define __XNEST__XCB_H
 | |
| 
 | |
| #include <xcb/xcb.h>
 | |
| 
 | |
| struct xnest_upstream_info {
 | |
|     xcb_connection_t *conn;
 | |
|     uint32_t screenId;
 | |
|     const xcb_screen_t *screenInfo;
 | |
|     const xcb_setup_t *setup;
 | |
| };
 | |
| 
 | |
| extern struct xnest_upstream_info xnestUpstreamInfo;
 | |
| 
 | |
| /* fetch upstream connection's xcb setup data */
 | |
| void xnest_upstream_setup(void);
 | |
| 
 | |
| /* retrieve upstream GC XID for our xserver GC */
 | |
| uint32_t xnest_upstream_gc(GCPtr pGC);
 | |
| 
 | |
| typedef struct {
 | |
|     xcb_visualtype_t *upstreamVisual;
 | |
|     xcb_depth_t *upstreamDepth;
 | |
|     xcb_colormap_t upstreamCMap;
 | |
|     uint32_t ourXID;
 | |
|     VisualPtr ourVisual;
 | |
| } xnest_visual_t;
 | |
| 
 | |
| extern xnest_visual_t *xnestVisualMap;
 | |
| extern int xnestNumVisualMap;
 | |
| 
 | |
| void xnest_wm_colormap_windows(xcb_connection_t *conn, xcb_window_t w,
 | |
|                                xcb_window_t *windows, int count);
 | |
| 
 | |
| uint32_t xnest_create_bitmap_from_data(xcb_connection_t *conn, uint32_t drawable,
 | |
|                                        const char *data, uint32_t width, uint32_t height);
 | |
| 
 | |
| uint32_t xnest_create_pixmap_from_bitmap_data(xcb_connection_t *conn, uint32_t drawable,
 | |
|                                          const char *data, uint32_t width, uint32_t height,
 | |
|                                          uint32_t fg, uint32_t bg, uint16_t depth);
 | |
| 
 | |
| void xnest_set_command(xcb_connection_t *conn, xcb_window_t window, char ** argv, int argc);
 | |
| 
 | |
| void xnest_xkb_init(xcb_connection_t *conn);
 | |
| int xnest_xkb_device_id(xcb_connection_t *conn);
 | |
| 
 | |
| xcb_get_keyboard_mapping_reply_t *xnest_get_keyboard_mapping(xcb_connection_t *conn,
 | |
|                                                              int min_keycode,
 | |
|                                                              int count);
 | |
| 
 | |
| void xnest_get_pointer_control(xcb_connection_t *conn, int *acc_num, int *acc_den, int *threshold);
 | |
| 
 | |
| xRectangle xnest_get_geometry(xcb_connection_t *conn, uint32_t window);
 | |
| 
 | |
| int xnest_parse_geometry(const char *string, xRectangle *geometry);
 | |
| 
 | |
| uint32_t xnest_visual_map_to_upstream(VisualID visual);
 | |
| uint32_t xnest_upstream_visual_to_cmap(uint32_t visual);
 | |
| uint32_t xnest_visual_to_upstream_cmap(uint32_t visual);
 | |
| 
 | |
| #endif /* __XNEST__XCB_H */
 |