+static void
+query_statics(d_display_t *dpy)
+{
+ d_extension_query_t extensions[] = {
+ {
+ .ext = &dpy->xfixes,
+ .xcb = &xcb_xfixes_id,
+ .ver = (query_version_func_t)xcb_xfixes_query_version,
+ .major = XCB_XFIXES_MAJOR_VERSION,
+ .minor = XCB_XFIXES_MINOR_VERSION
+ },
+ {
+ .ext = &dpy->render,
+ .xcb = &xcb_render_id,
+ .ver = (query_version_func_t)xcb_render_query_version,
+ .major = XCB_RENDER_MAJOR_VERSION,
+ .minor = XCB_RENDER_MINOR_VERSION
+ },
+ {
+ .ext = &dpy->damage,
+ .xcb = &xcb_damage_id,
+ .ver = (query_version_func_t)xcb_damage_query_version,
+ .major = XCB_DAMAGE_MAJOR_VERSION,
+ .minor = XCB_DAMAGE_MINOR_VERSION
+ },
+ {
+ .ext = &dpy->composite,
+ .xcb = &xcb_composite_id,
+ .ver = (query_version_func_t)xcb_composite_query_version,
+ .major = XCB_COMPOSITE_MAJOR_VERSION,
+ .minor = XCB_COMPOSITE_MINOR_VERSION
+ },
+ { .ext = NULL }
+ };
+ d_atom_query_t atoms[] = {
+ { .atom = &dpy->a.atom,
+ .name = "ATOM" },
+ { .atom = &dpy->a.cardinal,
+ .name = "CARDINAL" },
+ { .atom = &dpy->a.utf8_string,
+ .name = "UTF8_STRING" },
+ { .atom = &dpy->a.string,
+ .name = "STRING" },
+ { .atom = &dpy->a.pixmap,
+ .name = "PIXMAP" },
+ { .atom = &dpy->a.net_wm_window_type,
+ .name = "_NET_WM_WINDOW_TYPE" },
+ { .atom = &dpy->a.net_wm_window_type_desktop,
+ .name = "_NET_WM_WINDOW_TYPE_DESKTOP" },
+ { .atom = &dpy->a.net_wm_window_type_dock,
+ .name = "_NET_WM_WINDOW_TYPE_DOCK" },
+ { .atom = &dpy->a.net_wm_window_type_normal,
+ .name = "_NET_WM_WINDOW_TYPE_NORMAL" },
+ { .atom = &dpy->a.net_wm_window_type_dialog,
+ .name = "_NET_WM_WINDOW_TYPE_DIALOG" },
+ { .atom = &dpy->a.net_wm_window_type_toolbar,
+ .name = "_NET_WM_WINDOW_TYPE_TOOLBAR" },
+ { .atom = &dpy->a.net_wm_window_type_menu,
+ .name = "_NET_WM_WINDOW_TYPE_MENU" },
+ { .atom = &dpy->a.net_wm_window_type_utility,
+ .name = "_NET_WM_WINDOW_TYPE_UTILITY" },
+ { .atom = &dpy->a.net_wm_window_type_splash,
+ .name = "_NET_WM_WINDOW_TYPE_SPLAH" },
+ { .atom = &dpy->a.net_wm_window_type_tooltip,
+ .name = "_NET_WM_WINDOW_TYPE_TOOLTIP" },
+ { .atom = &dpy->a.net_wm_window_type_combo,
+ .name = "_NET_WM_WINDOW_TYPE_COMBO" },
+ { .atom = &dpy->a.net_wm_window_type_dropdown_menu,
+ .name = "_NET_WM_WINDOW_TYPE_DROPDOWN_MENU" },
+ { .atom = &dpy->a.net_wm_window_type_popup_menu,
+ .name = "_NET_WM_WINDOW_TYPE_POPUP_MENU" },
+ { .atom = &dpy->a.net_wm_window_type_notification,
+ .name = "_NET_WM_WINDOW_TYPE_NOTIFICATION" },
+ { .atom = NULL }
+ };
+ int i;
+
+ for (i = 0; extensions[i].ext != NULL; ++i)
+ query_extension(dpy, &extensions[i]);
+ for (i = 0; atoms[i].atom != NULL; ++i)
+ query_atom(dpy, &atoms[i]);
+
+}