#ifndef __XCBINT_H
#define __XCBINT_H
-/* Not simply (a <= b) because eventually the 32-bit sequence number
- * will wrap, causing earlier sequence numbers to be higher than later
- * ones for a brief but fatal period. (a and b must be unsigned.) */
-#define _xcb_assert_sequence_less(a,b) assert((b) - (a) < 65536)
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
-#define _xcb_assert_valid_sequence(c) do { \
- _xcb_assert_sequence_less((c)->in.request_read, (c)->out.request_written); \
- _xcb_assert_sequence_less((c)->out.request_written, (c)->out.request); \
-} while(0)
+enum workarounds {
+ WORKAROUND_NONE,
+ WORKAROUND_GLX_GET_FB_CONFIGS_BUG
+};
/* xcb_list.c */
/* xcb_util.c */
-/* Index of nearest 4-byte boundary following E. */
-#define XCB_CEIL(E) (((E)+3)&~3)
-
-#define XCB_PAD(i) ((4 - (i & 3)) & 3)
+#define XCB_PAD(i) (-(i) & 3)
int _xcb_set_fd_flags(const int fd);
-int _xcb_readn(const int fd, void *buf, const int buflen, int *count);
int _xcb_read_block(const int fd, void *buf, const size_t len);
-int _xcb_write(const int fd, char (*buf)[], int *count);
-int _xcb_writev(const int fd, struct iovec *vec, int count);
/* xcb_out.c */
struct iovec *vec;
int vec_len;
- void *last_request;
unsigned int request;
unsigned int request_written;
_xcb_map *replies;
_xcb_queue *events;
_xcb_list *readers;
+
+ _xcb_queue *pending_replies;
} _xcb_in;
int _xcb_in_init(_xcb_in *in);
void _xcb_in_destroy(_xcb_in *in);
-int _xcb_in_expect_reply(XCBConnection *c, unsigned int request);
+int _xcb_in_expect_reply(XCBConnection *c, unsigned int request, enum workarounds workaround);
-int _xcb_in_read_packet(XCBConnection *c);
int _xcb_in_read(XCBConnection *c);
int _xcb_in_read_block(XCBConnection *c, void *buf, int nread);