1 #include <X11/XCB/xcb.h>
10 void list_extensions(void (*)(int, char *));
11 void print_extension(int, char *);
12 void query_extension(int, char *);
14 void print_screen(XCBSCREEN *s);
16 int main(int argc, char **argv)
18 void (*ext_printer)(int, char *) = print_extension;
21 c = XCBConnect(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", XCBGetSetup(c)->protocol_major_version, XCBGetSetup(c)->protocol_minor_version);
48 fputs("\n" "vendor string: ", stdout);
49 fwrite(XCBConnSetupSuccessRepVendor(XCBGetSetup(c)), 1, XCBConnSetupSuccessRepVendorLength(XCBGetSetup(c)), stdout);
50 printf("\n" "vendor release number: %d", (int) XCBGetSetup(c)->release_number);
51 /* "\n" "XFree86 version: %d.%d.%d.%d" */
52 printf("\n" "maximum request size: %d bytes", XCBGetSetup(c)->maximum_request_length * 4);
53 printf("\n" "motion buffer size: %d", (int)XCBGetSetup(c)->motion_buffer_size);
54 printf("\n" "bitmap unit, bit order, padding: %d, %s, %d", XCBGetSetup(c)->bitmap_format_scanline_unit, (XCBGetSetup(c)->bitmap_format_bit_order == XCBImageOrderLSBFirst) ? "LSBFirst" : "MSBFirst", XCBGetSetup(c)->bitmap_format_scanline_pad);
55 printf("\n" "image byte order: %s", (XCBGetSetup(c)->image_byte_order == XCBImageOrderLSBFirst) ? "LSBFirst" : "MSBFirst");
59 printf("\n" "keycode range: minimum %d, maximum %d", XCBGetSetup(c)->min_keycode.id, XCBGetSetup(c)->max_keycode.id);
64 int i = XCBConnSetupSuccessRepPixmapFormatsLength(XCBGetSetup(c));
65 XCBFORMAT *p = XCBConnSetupSuccessRepPixmapFormats(XCBGetSetup(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 XCBListExtensionsRep *r;
77 r = XCBListExtensionsReply(c, XCBListExtensions(c), 0);
80 fputs("ListExtensions failed.\n", stderr);
84 i = XCBListExtensionsNamesIter(r);
85 printf("\n" "number of extensions: %d", i.rem);
86 for(; i.rem; XCBSTRNext(&i))
88 fputs("\n" " ", stdout);
89 ext_printer(XCBSTRNameLength(i.data), XCBSTRName(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 XCBQueryExtensionRep *r;
104 r = XCBQueryExtensionReply(c, XCBQueryExtension(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);
139 i = XCBConnSetupSuccessRepRootsIter(XCBGetSetup(c));
140 printf("\n" "number of screens: %d" "\n", i.rem);
141 for(cur = 1; i.rem; XCBSCREENNext(&i), ++cur)
143 printf("\n" "screen #%d:", cur);
144 print_screen(i.data);
148 void print_screen(XCBSCREEN *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);