Passes shared memory segments by file descriptor, AttachFd passes from
client to server, CreateSegment passes from server to client.

Signed-off-by: Keith Packard <[email protected]>
---
 shm.h      |  2 +-
 shmproto.h | 42 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/shm.h b/shm.h
index e076402..be49f5e 100644
--- a/shm.h
+++ b/shm.h
@@ -32,7 +32,7 @@ in this Software without prior written authorization from The 
Open Group.
 #define SHMNAME "MIT-SHM"
 
 #define SHM_MAJOR_VERSION      1       /* current version numbers */
-#define SHM_MINOR_VERSION      1
+#define SHM_MINOR_VERSION      2
 
 #define ShmCompletion                  0
 #define ShmNumberEvents                        (ShmCompletion + 1)
diff --git a/shmproto.h b/shmproto.h
index e5de377..8136aa9 100644
--- a/shmproto.h
+++ b/shmproto.h
@@ -43,6 +43,8 @@ in this Software without prior written authorization from The 
Open Group.
 #define X_ShmPutImage                  3
 #define X_ShmGetImage                  4
 #define X_ShmCreatePixmap              5
+#define X_ShmAttachFd                   6
+#define X_ShmCreateSegment              7
 
 typedef struct _ShmQueryVersion {
     CARD8      reqType;                /* always ShmReqCode */
@@ -178,6 +180,46 @@ typedef struct _ShmCompletion {
 } xShmCompletionEvent;
 #define sz_xShmCompletionEvent 32
 
+/* Version 1.2 additions */
+typedef struct _ShmAttachFd {
+    CARD8      reqType;        /* always ShmReqCode */
+    CARD8      shmReqType;     /* always X_ShmAttachFd */
+    CARD16     length B16;
+    ShmSeg     shmseg B32;
+    BOOL       readOnly;
+    BYTE       pad0;
+    CARD16     pad1 B16;
+} xShmAttachFdReq;
+/* File descriptor is passed with this request */
+#define sz_xShmAttachFdReq     12
+
+typedef struct _ShmCreateSegment {
+    CARD8      reqType;        /* always ShmReqCode */
+    CARD8      shmReqType;     /* always X_ShmAttachFd */
+    CARD16     length B16;
+    ShmSeg     shmseg B32;
+    CARD32      size B32;
+    BOOL       readOnly;
+    BYTE       pad0;
+    CARD16     pad1 B16;
+} xShmCreateSegmentReq;
+#define sz_xShmCreateSegmentReq 16
+
+typedef struct {
+    CARD8      type;                   /* must be X_Reply */
+    CARD8      nfd;                    /* must be 1    */
+    CARD16     sequenceNumber  B16;    /* last sequence number */
+    CARD32     length  B32;            /* 0 */
+    CARD32     pad2    B32;            /* unused */
+    CARD32     pad3    B32;            /* unused */
+    CARD32     pad4    B32;            /* unused */
+    CARD32     pad5    B32;            /* unused */
+    CARD32     pad6    B32;            /* unused */
+    CARD32     pad7    B32;            /* unused */
+} xShmCreateSegmentReply;
+/* File descriptor is passed with this reply */
+#define sz_xShmCreateSegmentReply      32
+
 #undef ShmSeg
 #undef Drawable
 #undef VisualID
-- 
1.8.4.rc3

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to