#include <stdlib.h>
-#include <X11/XCB/xcb.h>
-#include <X11/XCB/xcb_aux.h>
+#include <xcb/xcb.h>
+#include <xcb/xcb_aux.h>
#include "reply_formats.h"
#ifdef VERBOSE
#include <stdio.h>
#endif
-void try_events(XCBConnection *c);
-void wait_events(XCBConnection *c);
+void try_events(xcb_connection_t *c);
+void wait_events(xcb_connection_t *c);
-static XCBConnection *c;
-static XCBWINDOW window;
+static xcb_connection_t *c;
+static xcb_window_t window;
int main(int argc, char **argv)
{
- CARD32 mask = 0;
- CARD32 values[6];
- XCBDRAWABLE d;
- XCBSCREEN *root;
+ uint32_t mask = 0;
+ uint32_t values[6];
+ xcb_drawable_t d;
+ xcb_screen_t *root;
#ifdef TEST_GET_GEOMETRY
- XCBGetGeometryCookie geom[3];
- XCBGetGeometryRep *geomrep[3];
+ xcb_get_geometry_cookie_t geom[3];
+ xcb_get_geometry_reply_t *geomrep[3];
#endif
#ifdef TEST_QUERY_TREE
- XCBQueryTreeCookie tree[3];
- XCBQueryTreeRep *treerep[3];
+ xcb_query_tree_cookie_t tree[3];
+ xcb_query_tree_reply_t *treerep[3];
#endif
#ifdef TEST_GET_WINDOW_ATTRIBUTES
- XCBGetWindowAttributesCookie attr[1];
- XCBGetWindowAttributesRep *attrrep[1];
+ xcb_get_window_attributes_cookie_t attr[1];
+ xcb_get_window_attributes_reply_t *attrrep[1];
#endif
#ifdef TEST_ICCCM
- XCBInternAtomCookie atom[2];
- XCBInternAtomRep *atomrep[2];
+ xcb_intern_atom_cookie_t atom[2];
+ xcb_intern_atom_reply_t *atomrep[2];
#endif
#ifdef TEST_THREADS
pthread_t event_thread;
#endif
int screen_num;
- c = XCBConnect(0, &screen_num);
- root = XCBAuxGetScreen(c, screen_num);
+ c = xcb_connect(0, &screen_num);
+ root = xcb_aux_get_screen(c, screen_num);
#ifdef TEST_THREADS
# ifdef VERBOSE
#endif
#if 1
- window = XCBWINDOWNew(c);
+ window = xcb_generate_id(c);
#else
window = 0; /* should be an invalid ID */
#endif
- mask |= XCBCWBackPixel;
+ mask |= XCB_CW_BACK_PIXEL;
values[0] = root->white_pixel;
- mask |= XCBCWBorderPixel;
+ mask |= XCB_CW_BORDER_PIXEL;
values[1] = root->black_pixel;
- mask |= XCBCWBackingStore;
- values[2] = XCBBackingStoreAlways;
+ mask |= XCB_CW_BACKING_STORE;
+ values[2] = XCB_BACKING_STORE_ALWAYS;
- mask |= XCBCWOverrideRedirect;
+ mask |= XCB_CW_OVERRIDE_REDIRECT;
values[3] = 0;
- mask |= XCBCWEventMask;
- values[4] = XCBEventMaskButtonRelease
- | XCBEventMaskExposure | XCBEventMaskStructureNotify
- | XCBEventMaskEnterWindow | XCBEventMaskLeaveWindow;
+ mask |= XCB_CW_EVENT_MASK;
+ values[4] = XCB_EVENT_MASK_BUTTON_RELEASE
+ | XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_STRUCTURE_NOTIFY
+ | XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW;
- mask |= XCBCWDontPropagate;
- values[5] = XCBEventMaskButtonPress;
+ mask |= XCB_CW_DONT_PROPAGATE;
+ values[5] = XCB_EVENT_MASK_BUTTON_PRESS;
- XCBCreateWindow(c, /* depth */ 0,
+ xcb_create_window(c, /* depth */ 0,
window, root->root,
/* x */ 20, /* y */ 200, /* width */ 150, /* height */ 150,
- /* border_width */ 10, /* class */ XCBWindowClassInputOutput,
+ /* border_width */ 10, /* class */ XCB_WINDOW_CLASS_INPUT_OUTPUT,
/* visual */ root->root_visual, mask, values);
#ifdef TEST_ICCCM
- atom[0] = XCBInternAtom(c, 0, sizeof("WM_PROTOCOLS")-1, "WM_PROTOCOLS");
- atom[1] = XCBInternAtom(c, 0, sizeof("WM_DELETE_WINDOW")-1, "WM_DELETE_WINDOW");
- atomrep[1] = XCBInternAtomReply(c, atom[1], 0);
- atomrep[0] = XCBInternAtomReply(c, atom[0], 0);
+ atom[0] = xcb_intern_atom(c, 0, sizeof("WM_PROTOCOLS")-1, "WM_PROTOCOLS");
+ atom[1] = xcb_intern_atom(c, 0, sizeof("WM_DELETE_WINDOW")-1, "WM_DELETE_WINDOW");
+ atomrep[1] = xcb_intern_atom_reply(c, atom[1], 0);
+ atomrep[0] = xcb_intern_atom_reply(c, atom[0], 0);
{
- XCBATOM XA_WM_NAME = { 39 };
- XCBATOM XA_STRING = { 31 };
- XCBChangeProperty(c, XCBPropModeReplace, window, XA_WM_NAME, XA_STRING, 8, strlen(argv[0]), argv[0]);
+ xcb_atom_t XA_WM_NAME = { 39 };
+ xcb_atom_t XA_STRING = { 31 };
+ xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, XA_WM_NAME, XA_STRING, 8, strlen(argv[0]), argv[0]);
}
if(atomrep[0] && atomrep[1])
{
- XCBATOM WM_PROTOCOLS = atomrep[0]->atom;
- XCBATOM WM_DELETE_WINDOW = atomrep[1]->atom;
- XCBATOM XA_ATOM = { 4 };
- XCBChangeProperty(c, XCBPropModeReplace, window, WM_PROTOCOLS, XA_ATOM, 32, 1, &WM_DELETE_WINDOW);
+ xcb_atom_t WM_PROTOCOLS = atomrep[0]->atom;
+ xcb_atom_t WM_DELETE_WINDOW = atomrep[1]->atom;
+ xcb_atom_t XA_ATOM = { 4 };
+ xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, WM_PROTOCOLS, XA_ATOM, 32, 1, &WM_DELETE_WINDOW);
}
free(atomrep[0]);
free(atomrep[1]);
#endif
try_events(c);
- XCBMapWindow(c, window);
- XCBFlush(c);
+ xcb_map_window(c, window);
+ xcb_flush(c);
/* Send off a collection of requests */
#ifdef TEST_GET_WINDOW_ATTRIBUTES
- attr[0] = XCBGetWindowAttributes(c, window);
+ attr[0] = xcb_get_window_attributes(c, window);
#endif
#ifdef TEST_GET_GEOMETRY
- d.window = root->root;
- geom[0] = XCBGetGeometry(c, d);
- d.window = window;
- geom[1] = XCBGetGeometry(c, d);
+ geom[0] = xcb_get_geometry(c, root->root);
+ geom[1] = xcb_get_geometry(c, window);
#endif
#ifdef TEST_QUERY_TREE
# ifdef SUPERVERBOSE /* this produces a lot of output :) */
- tree[0] = XCBQueryTree(c, root->root);
+ tree[0] = xcb_query_tree(c, root->root);
# endif
- tree[1] = XCBQueryTree(c, window);
+ tree[1] = xcb_query_tree(c, window);
#endif
/* Start reading replies and possibly events */
#ifdef TEST_GET_GEOMETRY
- geomrep[0] = XCBGetGeometryReply(c, geom[0], 0);
+ geomrep[0] = xcb_get_geometry_reply(c, geom[0], 0);
formatGetGeometryReply(root->root, geomrep[0]);
free(geomrep[0]);
#endif
#ifdef TEST_QUERY_TREE
# ifdef SUPERVERBOSE /* this produces a lot of output :) */
- treerep[0] = XCBQueryTreeReply(c, tree[0], 0);
+ treerep[0] = xcb_query_tree_reply(c, tree[0], 0);
formatQueryTreeReply(root->root, treerep[0]);
free(treerep[0]);
# endif
#endif
#ifdef TEST_GET_GEOMETRY
- geomrep[1] = XCBGetGeometryReply(c, geom[1], 0);
+ geomrep[1] = xcb_get_geometry_reply(c, geom[1], 0);
formatGetGeometryReply(window, geomrep[1]);
free(geomrep[1]);
#endif
/* Mix in some more requests */
#ifdef TEST_QUERY_TREE
- treerep[1] = XCBQueryTreeReply(c, tree[1], 0);
+ treerep[1] = xcb_query_tree_reply(c, tree[1], 0);
formatQueryTreeReply(window, treerep[1]);
- if(treerep[1] && treerep[1]->parent.xid && treerep[1]->parent.xid != root->root.xid)
+ if(treerep[1] && treerep[1]->parent && treerep[1]->parent != root->root)
{
- tree[2] = XCBQueryTree(c, treerep[1]->parent);
+ tree[2] = xcb_query_tree(c, treerep[1]->parent);
# ifdef TEST_GET_GEOMETRY
- d.window = treerep[1]->parent;
- geom[2] = XCBGetGeometry(c, d);
- geomrep[2] = XCBGetGeometryReply(c, geom[2], 0);
+ geom[2] = xcb_get_geometry(c, treerep[1]->parent);
+ geomrep[2] = xcb_get_geometry_reply(c, geom[2], 0);
formatGetGeometryReply(treerep[1]->parent, geomrep[2]);
free(geomrep[2]);
# endif
- treerep[2] = XCBQueryTreeReply(c, tree[2], 0);
+ treerep[2] = xcb_query_tree_reply(c, tree[2], 0);
formatQueryTreeReply(treerep[1]->parent, treerep[2]);
free(treerep[2]);
}
/* Get the last reply of the first batch */
#if 1 /* if 0, leaves a reply in the reply queue */
#ifdef TEST_GET_WINDOW_ATTRIBUTES
- attrrep[0] = XCBGetWindowAttributesReply(c, attr[0], 0);
+ attrrep[0] = xcb_get_window_attributes_reply(c, attr[0], 0);
formatGetWindowAttributesReply(window, attrrep[0]);
free(attrrep[0]);
#endif
#else
wait_events(c);
#endif
- XCBDisconnect(c);
+ xcb_disconnect(c);
exit(0);
/*NOTREACHED*/
}
-int show_event(XCBGenericEvent *e)
+int show_event(xcb_generic_event_t *e)
{
int ret = 1;
if(!formatEvent(e))
return 0;
- if(e->response_type == XCBButtonRelease)
+ if(e->response_type == XCB_BUTTON_RELEASE)
ret = 0; /* They clicked, therefore, we're done. */
free(e);
return ret;
}
-void try_events(XCBConnection *c)
+void try_events(xcb_connection_t *c)
{
- XCBGenericEvent *e;
- while((e = XCBPollForEvent(c, 0)) && show_event(e))
+ xcb_generic_event_t *e;
+ while((e = xcb_poll_for_event(c)) && show_event(e))
/* empty statement */ ;
}
-void wait_events(XCBConnection *c)
+void wait_events(xcb_connection_t *c)
{
- XCBGenericEvent *e;
+ xcb_generic_event_t *e;
#ifdef TEST_THREADS
# ifdef VERBOSE
printf("wait_events() thread ID: %ld\n", pthread_self());
# endif
#endif
- while((e = XCBWaitForEvent(c)) && show_event(e))
+ while((e = xcb_wait_for_event(c)) && show_event(e))
/* empty statement */ ;
}