1 /*
2    Copyright (c) 2002  XFree86 Inc
3 */
4 
5 #ifndef _XRESPROTO_H
6 #define _XRESPROTO_H
7 
8 #define XRES_MAJOR_VERSION 1
9 #define XRES_MINOR_VERSION 2
10 
11 #define XRES_NAME "X-Resource"
12 
13 /* v1.0 */
14 #define X_XResQueryVersion            0
15 #define X_XResQueryClients            1
16 #define X_XResQueryClientResources    2
17 #define X_XResQueryClientPixmapBytes  3
18 
19 /* Version 1.1 has been accidentally released from the version           */
20 /* control and while it doesn't have differences to version 1.0, the     */
21 /* next version is labeled 1.2 in order to remove the risk of confusion. */
22 
23 /* v1.2 */
24 #define X_XResQueryClientIds          4
25 #define X_XResQueryResourceBytes      5
26 
27 typedef struct {
28    CARD32 resource_base;
29    CARD32 resource_mask;
30 } xXResClient;
31 #define sz_xXResClient 8
32 
33 typedef struct {
34    CARD32 resource_type;
35    CARD32 count;
36 } xXResType;
37 #define sz_xXResType 8
38 
39 /* XResQueryVersion */
40 
41 typedef struct _XResQueryVersion {
42    CARD8   reqType;
43    CARD8   XResReqType;
44    CARD16  length;
45    CARD8   client_major;
46    CARD8   client_minor;
47    CARD16  unused;
48 } xXResQueryVersionReq;
49 #define sz_xXResQueryVersionReq 8
50 
51 typedef struct {
52    CARD8   type;
53    CARD8   pad1;
54    CARD16  sequenceNumber;
55    CARD32  length;
56    CARD16  server_major;
57    CARD16  server_minor;
58    CARD32  pad2;
59    CARD32  pad3;
60    CARD32  pad4;
61    CARD32  pad5;
62    CARD32  pad6;
63 } xXResQueryVersionReply;
64 #define sz_xXResQueryVersionReply  32
65 
66 /* XResQueryClients */
67 
68 typedef struct _XResQueryClients {
69    CARD8   reqType;
70    CARD8   XResReqType;
71    CARD16  length;
72 } xXResQueryClientsReq;
73 #define sz_xXResQueryClientsReq 4
74 
75 typedef struct {
76    CARD8   type;
77    CARD8   pad1;
78    CARD16  sequenceNumber;
79    CARD32  length;
80    CARD32  num_clients;
81    CARD32  pad2;
82    CARD32  pad3;
83    CARD32  pad4;
84    CARD32  pad5;
85    CARD32  pad6;
86 } xXResQueryClientsReply;
87 #define sz_xXResQueryClientsReply  32
88 
89 /* XResQueryClientResources */
90 
91 typedef struct _XResQueryClientResources {
92    CARD8   reqType;
93    CARD8   XResReqType;
94    CARD16  length;
95    CARD32  xid;
96 } xXResQueryClientResourcesReq;
97 #define sz_xXResQueryClientResourcesReq 8
98 
99 typedef struct {
100    CARD8   type;
101    CARD8   pad1;
102    CARD16  sequenceNumber;
103    CARD32  length;
104    CARD32  num_types;
105    CARD32  pad2;
106    CARD32  pad3;
107    CARD32  pad4;
108    CARD32  pad5;
109    CARD32  pad6;
110 } xXResQueryClientResourcesReply;
111 #define sz_xXResQueryClientResourcesReply  32
112 
113 /* XResQueryClientPixmapBytes */
114 
115 typedef struct _XResQueryClientPixmapBytes {
116    CARD8   reqType;
117    CARD8   XResReqType;
118    CARD16  length;
119    CARD32  xid;
120 } xXResQueryClientPixmapBytesReq;
121 #define sz_xXResQueryClientPixmapBytesReq 8
122 
123 typedef struct {
124    CARD8   type;
125    CARD8   pad1;
126    CARD16  sequenceNumber;
127    CARD32  length;
128    CARD32  bytes;
129    CARD32  bytes_overflow;
130    CARD32  pad2;
131    CARD32  pad3;
132    CARD32  pad4;
133    CARD32  pad5;
134 } xXResQueryClientPixmapBytesReply;
135 #define sz_xXResQueryClientPixmapBytesReply  32
136 
137 /* v1.2 XResQueryClientIds */
138 
139 #define X_XResClientXIDMask      0x01
140 #define X_XResLocalClientPIDMask 0x02
141 
142 typedef struct _XResClientIdSpec {
143    CARD32  client;
144    CARD32  mask;
145 } xXResClientIdSpec;
146 #define sz_xXResClientIdSpec 8
147 
148 typedef struct _XResClientIdValue {
149    xXResClientIdSpec spec;
150    CARD32  length;
151    // followed by length CARD32s
152 } xXResClientIdValue;
153 #define sz_xResClientIdValue (sz_xXResClientIdSpec + 4)
154 
155 typedef struct _XResQueryClientIds {
156    CARD8   reqType;
157    CARD8   XResReqType;
158    CARD16  length;
159    CARD32  numSpecs;
160    // followed by numSpecs times XResClientIdSpec
161 } xXResQueryClientIdsReq;
162 #define sz_xXResQueryClientIdsReq 8
163 
164 typedef struct {
165    CARD8   type;
166    CARD8   pad1;
167    CARD16  sequenceNumber;
168    CARD32  length;
169    CARD32  numIds;
170    CARD32  pad2;
171    CARD32  pad3;
172    CARD32  pad4;
173    CARD32  pad5;
174    CARD32  pad6;
175    // followed by numIds times XResClientIdValue
176 } xXResQueryClientIdsReply;
177 #define sz_xXResQueryClientIdsReply  32
178 
179 /* v1.2 XResQueryResourceBytes */
180 
181 typedef struct _XResResourceIdSpec {
182    CARD32  resource;
183    CARD32  type;
184 } xXResResourceIdSpec;
185 #define sz_xXResResourceIdSpec 8
186 
187 typedef struct _XResQueryResourceBytes {
188    CARD8   reqType;
189    CARD8   XResReqType;
190    CARD16  length;
191    CARD32  client;
192    CARD32  numSpecs;
193    // followed by numSpecs times XResResourceIdSpec
194 } xXResQueryResourceBytesReq;
195 #define sz_xXResQueryResourceBytesReq 12
196 
197 typedef struct _XResResourceSizeSpec {
198    xXResResourceIdSpec spec;
199    CARD32  bytes;
200    CARD32  refCount;
201    CARD32  useCount;
202 } xXResResourceSizeSpec;
203 #define sz_xXResResourceSizeSpec (sz_xXResResourceIdSpec + 12)
204 
205 typedef struct _XResResourceSizeValue {
206    xXResResourceSizeSpec size;
207    CARD32  numCrossReferences;
208    // followed by numCrossReferences times XResResourceSizeSpec
209 } xXResResourceSizeValue;
210 #define sz_xXResResourceSizeValue (sz_xXResResourceSizeSpec + 4)
211 
212 typedef struct {
213    CARD8   type;
214    CARD8   pad1;
215    CARD16  sequenceNumber;
216    CARD32  length;
217    CARD32  numSizes;
218    CARD32  pad2;
219    CARD32  pad3;
220    CARD32  pad4;
221    CARD32  pad5;
222    CARD32  pad6;
223    // followed by numSizes times XResResourceSizeValue
224 } xXResQueryResourceBytesReply;
225 #define sz_xXResQueryResourceBytesReply  32
226 
227 #endif /* _XRESPROTO_H */
228