Xxcbint.h revision 1ab64890
11ab64890Smrg/* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett 21ab64890Smrg * This file is licensed under the MIT license. See the file COPYING. */ 31ab64890Smrg 41ab64890Smrg#ifndef XXCBINT_H 51ab64890Smrg#define XXCBINT_H 61ab64890Smrg 71ab64890Smrg#include <assert.h> 81ab64890Smrg#include <X11/Xlibint.h> 91ab64890Smrg#include <X11/Xlib-xcb.h> 101ab64890Smrg#include "locking.h" /* really just want X11/Xthreads.h but can't have it. */ 111ab64890Smrg 121ab64890Smrg#define XCB_SEQUENCE_COMPARE(a,op,b) ((int) ((a) - (b)) op 0) 131ab64890Smrg#define assert_sequence_less(a,b) assert(XCB_SEQUENCE_COMPARE((a), <=, (b))) 141ab64890Smrg 151ab64890Smrgtypedef struct PendingRequest PendingRequest; 161ab64890Smrgstruct PendingRequest { 171ab64890Smrg PendingRequest *next; 181ab64890Smrg xcondition_rec condition; 191ab64890Smrg int waiters; /* Number of threads waiting; -1 if no wait needed */ 201ab64890Smrg unsigned int sequence; 211ab64890Smrg}; 221ab64890Smrg 231ab64890Smrgtypedef struct _X11XCBPrivate { 241ab64890Smrg struct _XLockPtrs lock_fns; 251ab64890Smrg xcb_connection_t *connection; 261ab64890Smrg PendingRequest *pending_requests; 271ab64890Smrg PendingRequest **pending_requests_tail; 281ab64890Smrg xcb_generic_event_t *next_event; 291ab64890Smrg const char *request_extra; 301ab64890Smrg int request_extra_size; 311ab64890Smrg char *partial_request; 321ab64890Smrg int partial_request_offset; 331ab64890Smrg char *reply_data; 341ab64890Smrg int reply_length; 351ab64890Smrg int reply_consumed; 361ab64890Smrg enum XEventQueueOwner event_owner; 371ab64890Smrg XID next_xid; 381ab64890Smrg} _X11XCBPrivate; 391ab64890Smrg 401ab64890Smrg/* xcb_disp.c */ 411ab64890Smrg 421ab64890Smrgint _XConnectXCB(Display *dpy, _Xconst char *display, char **fullnamep, int *screenp); 431ab64890Smrgvoid _XFreeX11XCBStructure(Display *dpy); 441ab64890Smrg 451ab64890Smrg/* xcb_lock.c */ 461ab64890Smrg 471ab64890Smrgint _XCBInitDisplayLock(Display *dpy); 481ab64890Smrgvoid _XCBShutdownDisplayLock(Display *dpy); 491ab64890Smrg 501ab64890Smrg/* _XGetXCBBuffer and _XPutXCBBuffer calls must be paired and must not 511ab64890Smrg * be nested. */ 521ab64890Smrg 531ab64890Smrgvoid _XGetXCBBuffer(Display *dpy); 541ab64890Smrgvoid _XPutXCBBuffer(Display *dpy); 551ab64890Smrg 561ab64890Smrg#endif /* XXCBINT_H */ 57