添加单独的函数来初始化 xcb
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#define WINDOW_NONE XCB_WINDOW_NONE
|
||||
|
||||
bool has_other_wm_running(void);
|
||||
void setup_xcb(void);
|
||||
int get_xcb_connection_fd(void);
|
||||
void flush_xcb_connection(void);
|
||||
|
||||
|
||||
@@ -945,6 +945,7 @@ int main(int argc, char *argv[]) {
|
||||
die("another window manager is already running");
|
||||
}
|
||||
|
||||
setup_xcb();
|
||||
init_monitors();
|
||||
init_color_set();
|
||||
init_monitor_bar();
|
||||
|
||||
@@ -42,6 +42,20 @@ bool has_other_wm_running(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void setup_xcb(void) {
|
||||
uint32_t event_mask =
|
||||
XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY |
|
||||
XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_POINTER_MOTION |
|
||||
XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW |
|
||||
XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_PROPERTY_CHANGE;
|
||||
uint32_t mask = XCB_CW_EVENT_MASK;
|
||||
xcb_params_cw_t params = {.event_mask = event_mask};
|
||||
xcb_aux_change_window_attributes(conn, screen->root, mask, ¶ms);
|
||||
|
||||
init_icccm_extension();
|
||||
init_ewmh_extension();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取 xcb 链接对应的文件描述符
|
||||
*/
|
||||
@@ -169,9 +183,6 @@ void set_wallpaper(uint32_t *wallpaper_data) {
|
||||
* @note: 返回的窗口列表数据使用完后使用 free_window_list 释放
|
||||
*/
|
||||
window_list_t *scan_window_list(void) {
|
||||
init_icccm_extension();
|
||||
init_ewmh_extension();
|
||||
|
||||
xcb_query_tree_cookie_t cookie = xcb_query_tree(conn, screen->root);
|
||||
xcb_query_tree_reply_t *tree_reply = xcb_query_tree_reply(conn, cookie, NULL);
|
||||
if (!tree_reply) return NULL;
|
||||
|
||||
Reference in New Issue
Block a user