10 void list_extensions(void (*)(int, char *));
11 void print_extension(int, char *);
12 void query_extension(int, char *);
14 void print_screen(xcb_screen_t *s);
16 int main(int argc, char **argv)
18 void (*ext_printer)(int, char *) = print_extension;
21 c = xcb_connect(0, &screen);
24 fputs("Connect failed.\n", stderr);
28 for(--argc; argc; --argc)
29 if(!strcmp(argv[argc], "-queryExtensions"))
30 ext_printer = query_extension;
32 /* "name of display: %s" "\n" */
34 /* "\n" "focus: window 0x%x, revert to %s" (e.g. PointerRoot) */
35 list_extensions(ext_printer);
36 printf("\n" "default screen number: %d", screen);
47 printf("version number: %d.%d", xcb_get_setup(c)->protocol_major_version, xcb_get_setup(c)->protocol_minor_version);
48 fputs("\n" "vendor string: ", stdout);
49 fwrite(xcb_setup_vendor(xcb_get_setup(c)), 1, xcb_setup_vendor_length(xcb_get_setup(c)), stdout);
50 printf("\n" "vendor release number: %d", (int) xcb_get_setup(c)->release_number);
51 /* "\n" "XFree86 version: %d.%d.%d.%d" */
52 printf("\n" "maximum request size: %d bytes", xcb_get_setup(c)->maximum_request_length * 4);
53 printf("\n" "motion buffer size: %d", (int)xcb_get_setup(c)->motion_buffer_size);
54 printf("\n" "bitmap unit, bit order, padding: %d, %s, %d", xcb_get_setup(c)->bitmap_format_scanline_unit, (xcb_get_setup(c)->bitmap_format_bit_order == XCB_IMAGE_ORDER_LSB_FIRST) ? "LSBFirst" : "MSBFirst", xcb_get_setup(c)->bitmap_format_scanline_pad);
55 printf("\n" "image byte order: %s", (xcb_get_setup(c)->image_byte_order == XCB_IMAGE_ORDER_LSB_FIRST) ? "LSBFirst" : "MSBFirst");
59 printf("\n" "keycode range: minimum %d, maximum %d", xcb_get_setup(c)->min_keycode, xcb_get_setup(c)->max_keycode);
64 int i = xcb_setup_pixmap_formats_length(xcb_get_setup(c));
65 xcb_format_t *p = xcb_setup_pixmap_formats(xcb_get_setup(c));
66 printf("\n" "number of supported pixmap formats: %d", i);
67 fputs("\n" "supported pixmap formats:", stdout);
68 for(--i; i >= 0; --i, ++p)
69 printf("\n" " depth %d, bits_per_pixel %d, scanline_pad %d", p->depth, p->bits_per_pixel, p->scanline_pad);
72 void list_extensions(void (*ext_printer)(int, char *))
74 xcb_list_extensions_reply_t *r;
77 r = xcb_list_extensions_reply(c, xcb_list_extensions(c), 0);
80 fputs("ListExtensions failed.\n", stderr);
84 i = xcb_list_extensions_names_iterator(r);
85 printf("\n" "number of extensions: %d", i.rem);
86 for(; i.rem; xcb_str_next(&i))
88 fputs("\n" " ", stdout);
89 ext_printer(xcb_str_name_length(i.data), xcb_str_name(i.data));
94 void print_extension(int len, char *name)
96 fwrite(name, 1, len, stdout);
99 void query_extension(int len, char *name)
101 xcb_query_extension_reply_t *r;
104 r = xcb_query_extension_reply(c, xcb_query_extension(c, len, name), 0);
107 fputs("QueryExtension failed.\n", stderr);
111 print_extension(len, name);
115 printf("opcode: %d", r->major_opcode);
122 printf("base event: %d", r->first_event);
129 printf("base error: %d", r->first_error);
136 xcb_screen_iterator_t i;
139 i = xcb_setup_roots_iterator(xcb_get_setup(c));
140 printf("\n" "number of screens: %d" "\n", i.rem);
141 for(cur = 1; i.rem; xcb_screen_next(&i), ++cur)
143 printf("\n" "screen #%d:", cur);
144 print_screen(i.data);
148 void print_screen(xcb_screen_t *s)
150 printf("\n" " dimensions: %dx%d pixels (%dx%d millimeters)", s->width_in_pixels, s->height_in_pixels, s->width_in_millimeters, s->height_in_millimeters);