aboutsummaryrefslogtreecommitdiff
path: root/libxcb/src/xcbext.h
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2009-07-25 11:41:54 +0000
committermarha <marha@users.sourceforge.net>2009-07-25 11:41:54 +0000
commit1204cba5d6dbdfc8fc31cb7c4a4e467b9c55fc48 (patch)
tree54f50dac14b7b1e158ba7e18fc87d84455970910 /libxcb/src/xcbext.h
parent12fa8ee5d6535841f016c03c07f1d5cfc54513b0 (diff)
parent1dad159fe09ac3a88b21b98544880e5ecc0e8d54 (diff)
downloadvcxsrv-1204cba5d6dbdfc8fc31cb7c4a4e467b9c55fc48.tar.gz
vcxsrv-1204cba5d6dbdfc8fc31cb7c4a4e467b9c55fc48.tar.bz2
vcxsrv-1204cba5d6dbdfc8fc31cb7c4a4e467b9c55fc48.zip
svn merge file:///D:/svnrepos/vcxsrv/branches/released .
Diffstat (limited to 'libxcb/src/xcbext.h')
-rw-r--r--libxcb/src/xcbext.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/libxcb/src/xcbext.h b/libxcb/src/xcbext.h
index 01dd59015..ea5a2d355 100644
--- a/libxcb/src/xcbext.h
+++ b/libxcb/src/xcbext.h
@@ -28,6 +28,8 @@
#ifndef __XCBEXT_H
#define __XCBEXT_H
+#include <unistd.h>
+
#include "xcb.h"
#ifdef __cplusplus
@@ -59,6 +61,23 @@ enum xcb_send_request_flags_t {
unsigned int xcb_send_request(xcb_connection_t *c, int flags, struct iovec *vector, const xcb_protocol_request_t *request);
+/* xcb_take_socket allows external code to ask XCB for permission to
+ * take over the write side of the socket and send raw data with
+ * xcb_writev. xcb_take_socket provides the sequence number of the last
+ * request XCB sent. The caller of xcb_take_socket must supply a
+ * callback which XCB can call when it wants the write side of the
+ * socket back to make a request. This callback synchronizes with the
+ * external socket owner, flushes any output queues if appropriate, and
+ * then returns the sequence number of the last request sent over the
+ * socket. */
+int xcb_take_socket(xcb_connection_t *c, void (*return_socket)(void *closure), void *closure, int flags, uint64_t *sent);
+
+/* You must own the write-side of the socket (you've called
+ * xcb_take_socket, and haven't returned from return_socket yet) to call
+ * xcb_writev. Also, the iovec must have at least 1 byte of data in it.
+ * */
+int xcb_writev(xcb_connection_t *c, struct iovec *vector, int count, uint64_t requests);
+
/* xcb_in.c */