Add XCBGetQueuedRequestRead for Xlib that does no syscalls, just returns whatever...
[free-sw/xcb/libxcb] / src / xcbint.h
index 057a315..e7e6688 100644 (file)
 #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)
-
-#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 */
 
@@ -79,8 +74,6 @@ void *_xcb_map_remove(_xcb_map *q, unsigned int key);
 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 */
@@ -94,7 +87,6 @@ typedef struct _xcb_out {
     struct iovec *vec;
     int vec_len;
 
-    void *last_request;
     unsigned int request;
     unsigned int request_written;
 
@@ -125,14 +117,15 @@ typedef struct _xcb_in {
     _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);