4 * this is public domain without any warranties of any kind
7 /* XXX: KEEP AN EYE ON ABBREVIATIONS */
13 #include "app_core_types.h"
16 static void *xcb_client_lib
;
18 static xcb_connection_t
*(*dl_xcb_connect
)(u8
*displayname
, int *scr
);
19 static u32 (*dl_xcb_generate_id
)(xcb_connection_t
*c
);
20 static int (*dl_xcb_connection_has_error
)(xcb_connection_t
*c
);
21 static xcb_setup_t
*(*dl_xcb_get_setup
)(xcb_connection_t
*c
);
22 static int (*dl_xcb_setup_roots_length
)(xcb_setup_t
*s
);
23 static xcb_screen_iterator_t (*dl_xcb_setup_roots_iterator
)(xcb_setup_t
*s
);
24 static void (*dl_xcb_screen_next
)(xcb_screen_iterator_t
*iter
);
25 static void (*dl_xcb_create_window
)(xcb_connection_t
*c
, u8 depth
,
26 xcb_window_t wid
, xcb_window_t parent
, s16 x
, s16 y
, u16 width
,
27 u16 heigth
, u16 border_width
, u16
class, xcb_visualid_t visual
,
28 u32 value_mask
, u32
*value_list
);
29 static xcb_void_cookie_t (*dl_xcb_map_window
)(xcb_connection_t
*c
,
31 static xcb_void_cookie_t (*dl_xcb_map_window_checked
)(xcb_connection_t
*c
,
33 static xcb_generic_error_t
*(*dl_xcb_request_check
)(xcb_connection_t
*c
,
34 xcb_void_cookie_t cookie
);
35 static int (*dl_xcb_flush
)(xcb_connection_t
*c
);
36 static xcb_generic_event_t
*(*dl_xcb_wait_for_event
)(xcb_connection_t
*c
);
37 static xcb_generic_event_t
*(*dl_xcb_poll_for_event
)(xcb_connection_t
*c
);
38 static void (*dl_xcb_disconnect
)(xcb_connection_t
*c
);
39 static xcb_void_cookie_t (*dl_xcb_change_property
)(xcb_connection_t
*c
, u8 mode
,
40 xcb_window_t window
, xcb_atom_t property
, xcb_atom_t type
, u8 format
,
41 u32 data_len
, void *data
);
43 static void app_xcb_client_lib_load(void)
45 xcb_client_lib
= dlopen("libxcb.so.1", RTLD_LAZY
);
46 if (xcb_client_lib
== 0) {
47 LOG("0:MAIN:FATAL:%s:unable to load the xcb dynamic shared library\n", dlerror());
52 static void app_xcb_client_lib_close(void)
56 r
= dlclose(xcb_client_lib
);
58 LOG("0:MAIN:FATAL:%d:%s:unable to close the xcb dynamic shared library\n", r
, dlerror());
63 /*----------------------------------------------------------------------------*/
64 #define XCB_DLSYM(x) \
65 dl_##x = dlsym(xcb_client_lib, #x); \
67 LOG("0:MAIN:FATAL:%s:unable to find " #x "\n", dlerror()); \
70 static void app_xcb_syms(void)
72 XCB_DLSYM(xcb_connect
);
73 XCB_DLSYM(xcb_generate_id
);
74 XCB_DLSYM(xcb_connection_has_error
);
75 XCB_DLSYM(xcb_get_setup
);
76 XCB_DLSYM(xcb_setup_roots_length
);
77 XCB_DLSYM(xcb_setup_roots_iterator
);
78 XCB_DLSYM(xcb_screen_next
);
79 XCB_DLSYM(xcb_create_window
);
80 XCB_DLSYM(xcb_map_window
);
81 XCB_DLSYM(xcb_map_window_checked
);
82 XCB_DLSYM(xcb_request_check
);
84 XCB_DLSYM(xcb_wait_for_event
);
85 XCB_DLSYM(xcb_poll_for_event
);
86 XCB_DLSYM(xcb_change_property
);
87 XCB_DLSYM(xcb_disconnect
);