1/* 2 * Copyright 2002-2004 Red Hat Inc., Durham, North Carolina. 3 * 4 * All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining 7 * a copy of this software and associated documentation files (the 8 * "Software"), to deal in the Software without restriction, including 9 * without limitation on the rights to use, copy, modify, merge, 10 * publish, distribute, sublicense, and/or sell copies of the Software, 11 * and to permit persons to whom the Software is furnished to do so, 12 * subject to the following conditions: 13 * 14 * The above copyright notice and this permission notice (including the 15 * next paragraph) shall be included in all copies or substantial 16 * portions of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21 * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS 22 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 23 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 25 * SOFTWARE. 26 */ 27 28/* 29 * Authors: 30 * Rickard E. (Rik) Faith <faith@redhat.com> 31 * 32 */ 33 34/** \file 35 * This file describes the structures necessary to implement the wire 36 * protocol for the DMX protocol extension. It should be included only 37 * in files that implement the client-side (or server-side) part of the 38 * protocol (i.e., client-side applications should \b not include this 39 * file). */ 40 41#ifndef _DMXSTR_H_ 42#define _DMXSTR_H_ 43 44#define DMX_EXTENSION_NAME "DMX" 45#define DMX_EXTENSION_MAJOR 2 46#define DMX_EXTENSION_MINOR 2 47#define DMX_EXTENSION_PATCH 20040604 48 49/* These values must be larger than LastExtensionError. 50 The values in dmxext.h and dmxproto.h *MUST* match. */ 51#define DMX_BAD_XINERAMA 1001 52#define DMX_BAD_VALUE 1002 53 54#define X_DMXQueryVersion 0 55#define X_DMXGetScreenCount 1 56#define X_DMXGetScreenInformationDEPRECATED 2 57#define X_DMXGetWindowAttributes 3 58#define X_DMXGetInputCount 4 59#define X_DMXGetInputAttributes 5 60#define X_DMXForceWindowCreationDEPRECATED 6 61#define X_DMXReconfigureScreenDEPRECATED 7 62#define X_DMXSync 8 63#define X_DMXForceWindowCreation 9 64#define X_DMXGetScreenAttributes 10 65#define X_DMXChangeScreensAttributes 11 66#define X_DMXAddScreen 12 67#define X_DMXRemoveScreen 13 68#define X_DMXGetDesktopAttributes 14 69#define X_DMXChangeDesktopAttributes 15 70#define X_DMXAddInput 16 71#define X_DMXRemoveInput 17 72 73/** Wire-level description of DMXQueryVersion protocol request. */ 74typedef struct { 75 CARD8 reqType; /* dmxcode */ 76 CARD8 dmxReqType; /* X_DMXQueryVersion */ 77 CARD16 length; 78} xDMXQueryVersionReq; 79#define sz_xDMXQueryVersionReq 4 80 81/** Wire-level description of DMXQueryVersion protocol reply. */ 82typedef struct { 83 BYTE type; /* X_Reply */ 84 CARD8 ununsed; 85 CARD16 sequenceNumber; 86 CARD32 length; 87 CARD32 majorVersion; 88 CARD32 minorVersion; 89 CARD32 patchVersion; 90 CARD32 pad0; 91 CARD32 pad1; 92 CARD32 pad2; 93} xDMXQueryVersionReply; 94#define sz_xDMXQueryVersionReply 32 95 96/** Wire-level description of DMXSync protocol request. */ 97typedef struct { 98 CARD8 reqType; /* DMXCode */ 99 CARD8 dmxReqType; /* X_DMXSync */ 100 CARD16 length; 101} xDMXSyncReq; 102#define sz_xDMXSyncReq 4 103 104/** Wire-level description of DMXSync protocol reply. */ 105typedef struct { 106 BYTE type; /* X_Reply */ 107 CARD8 unused; 108 CARD16 sequenceNumber; 109 CARD32 length; 110 CARD32 status; 111 CARD32 pad0; 112 CARD32 pad1; 113 CARD32 pad2; 114 CARD32 pad3; 115 CARD32 pad4; 116} xDMXSyncReply; 117#define sz_xDMXSyncReply 32 118 119/** Wire-level description of DMXForceWindowCreation protocol request. */ 120typedef struct { 121 CARD8 reqType; /* DMXCode */ 122 CARD8 dmxReqType; /* X_DMXForceWindowCreation */ 123 CARD16 length; 124 CARD32 window; 125} xDMXForceWindowCreationReq; 126#define sz_xDMXForceWindowCreationReq 8 127 128/** Wire-level description of DMXForceWindowCreation protocol reply. */ 129typedef struct { 130 BYTE type; /* X_Reply */ 131 CARD8 unused; 132 CARD16 sequenceNumber; 133 CARD32 length; 134 CARD32 status; 135 CARD32 pad0; 136 CARD32 pad1; 137 CARD32 pad2; 138 CARD32 pad3; 139 CARD32 pad4; 140} xDMXForceWindowCreationReply; 141#define sz_xDMXForceWindowCreationReply 32 142 143/** Wire-level description of DMXGetScreenCount protocol request. */ 144typedef struct { 145 CARD8 reqType; /* DMXCode */ 146 CARD8 dmxReqType; /* X_DMXGetScreenCount */ 147 CARD16 length; 148} xDMXGetScreenCountReq; 149#define sz_xDMXGetScreenCountReq 4 150 151/** Wire-level description of DMXGetScreenCount protocol reply. */ 152typedef struct { 153 BYTE type; /* X_Reply */ 154 CARD8 unused; 155 CARD16 sequenceNumber; 156 CARD32 length; 157 CARD32 screenCount; 158 CARD32 pad0; 159 CARD32 pad1; 160 CARD32 pad2; 161 CARD32 pad3; 162 CARD32 pad4; 163} xDMXGetScreenCountReply; 164#define sz_xDMXGetScreenCountReply 32 165 166/** Wire-level description of DMXGetScreenAttributes protocol request. */ 167typedef struct { 168 CARD8 reqType; /* DMXCode */ 169 CARD8 dmxReqType; /* X_DMXGetScreenAttributes */ 170 CARD16 length; 171 CARD32 physicalScreen; 172} xDMXGetScreenAttributesReq; 173#define sz_xDMXGetScreenAttributesReq 8 174 175/** Wire-level description of DMXGetScreenAttributes protocol reply. */ 176typedef struct { 177 BYTE type; /* X_Reply */ 178 CARD8 unused; 179 CARD16 sequenceNumber; 180 CARD32 length; 181 CARD32 displayNameLength; 182 CARD32 logicalScreen; 183 184 CARD16 screenWindowWidth; 185 CARD16 screenWindowHeight; 186 INT16 screenWindowXoffset; 187 INT16 screenWindowYoffset; 188 189 CARD16 rootWindowWidth; 190 CARD16 rootWindowHeight; 191 INT16 rootWindowXoffset; 192 INT16 rootWindowYoffset; 193 INT16 rootWindowXorigin; 194 INT16 rootWindowYorigin; 195} xDMXGetScreenAttributesReply; 196#define sz_xDMXGetScreenAttributesReply 36 197 198/** Wire-level description of DMXChangeScreensAttributes protocol request. */ 199typedef struct { 200 CARD8 reqType; /* DMXCode */ 201 CARD8 dmxReqType; /* X_DMXChangeScreensAttributes */ 202 CARD16 length; 203 CARD32 screenCount; 204 CARD32 maskCount; 205} xDMXChangeScreensAttributesReq; 206#define sz_xDMXChangeScreensAttributesReq 12 207 208/** Wire-level description of DMXChangeScreensAttributes protocol reply. */ 209typedef struct { 210 BYTE type; /* X_Reply */ 211 CARD8 unused; 212 CARD16 sequenceNumber; 213 CARD32 length; 214 CARD32 status; 215 CARD32 errorScreen; 216 CARD32 pad0; 217 CARD32 pad1; 218 CARD32 pad2; 219 CARD32 pad3; 220} xDMXChangeScreensAttributesReply; 221#define sz_xDMXChangeScreensAttributesReply 32 222 223/** Wire-level description of DMXAddScreen protocol request. */ 224typedef struct { 225 CARD8 reqType; /* DMXCode */ 226 CARD8 dmxReqType; /* X_DMXAddScreen */ 227 CARD16 length; 228 CARD32 displayNameLength; 229 CARD32 physicalScreen; 230 CARD32 valueMask; 231} xDMXAddScreenReq; 232#define sz_xDMXAddScreenReq 16 233 234/** Wire-level description of DMXAddScreen protocol reply. */ 235typedef struct { 236 BYTE type; /* X_Reply */ 237 CARD8 unused; 238 CARD16 sequenceNumber; 239 CARD32 length; 240 CARD32 status; 241 CARD32 physicalScreen; 242 CARD32 pad0; 243 CARD32 pad1; 244 CARD32 pad2; 245 CARD32 pad3; 246} xDMXAddScreenReply; 247#define sz_xDMXAddScreenReply 32 248 249/** Wire-level description of DMXRemoveScreen protocol request. */ 250typedef struct { 251 CARD8 reqType; /* DMXCode */ 252 CARD8 dmxReqType; /* X_DMXRemoveScreen */ 253 CARD16 length; 254 CARD32 physicalScreen; 255} xDMXRemoveScreenReq; 256#define sz_xDMXRemoveScreenReq 8 257 258/** Wire-level description of DMXRemoveScreen protocol reply. */ 259typedef struct { 260 BYTE type; /* X_Reply */ 261 CARD8 unused; 262 CARD16 sequenceNumber; 263 CARD32 length; 264 CARD32 status; 265 CARD32 pad0; 266 CARD32 pad1; 267 CARD32 pad2; 268 CARD32 pad3; 269 CARD32 pad4; 270} xDMXRemoveScreenReply; 271#define sz_xDMXRemoveScreenReply 32 272 273/** Wire-level description of DMXGetWindowAttributes protocol request. */ 274typedef struct { 275 CARD8 reqType; /* DMXCode */ 276 CARD8 dmxReqType; /* X_DMXGetWindowAttributes */ 277 CARD16 length; 278 CARD32 window; 279} xDMXGetWindowAttributesReq; 280#define sz_xDMXGetWindowAttributesReq 8 281 282/** Wire-level description of DMXGetWindowAttributes protocol reply. */ 283typedef struct { 284 BYTE type; /* X_Reply */ 285 CARD8 unused; 286 CARD16 sequenceNumber; 287 CARD32 length; 288 CARD32 screenCount; 289 CARD32 pad0; 290 CARD32 pad1; 291 CARD32 pad2; 292 CARD32 pad3; 293 CARD32 pad4; 294} xDMXGetWindowAttributesReply; 295#define sz_xDMXGetWindowAttributesReply 32 296 297/** Wire-level description of DMXGetDesktopAttributes protocol request. */ 298typedef struct { 299 CARD8 reqType; /* DMXCode */ 300 CARD8 dmxReqType; /* X_DMXGetDesktopAttributes */ 301 CARD16 length; 302} xDMXGetDesktopAttributesReq; 303#define sz_xDMXGetDesktopAttributesReq 4 304 305/** Wire-level description of DMXGetDesktopAttributes protocol reply. */ 306typedef struct { 307 BYTE type; /* X_Reply */ 308 CARD8 unused; 309 CARD16 sequenceNumber; 310 CARD32 length; 311 INT16 width; 312 INT16 height; 313 INT16 shiftX; 314 INT16 shiftY; 315 CARD32 pad0; 316 CARD32 pad1; 317 CARD32 pad2; 318 CARD32 pad3; 319} xDMXGetDesktopAttributesReply; 320#define sz_xDMXGetDesktopAttributesReply 32 321 322/** Wire-level description of DMXChangeDesktopAttributes protocol request. */ 323typedef struct { 324 CARD8 reqType; /* DMXCode */ 325 CARD8 dmxReqType; /* X_DMXChangeDesktopAttributes */ 326 CARD16 length; 327 CARD32 valueMask; 328} xDMXChangeDesktopAttributesReq; 329#define sz_xDMXChangeDesktopAttributesReq 8 330 331/** Wire-level description of DMXChangeDesktopAttributes protocol reply. */ 332typedef struct { 333 BYTE type; /* X_Reply */ 334 CARD8 unused; 335 CARD16 sequenceNumber; 336 CARD32 length; 337 CARD32 status; 338 CARD32 pad0; 339 CARD32 pad1; 340 CARD32 pad2; 341 CARD32 pad3; 342 CARD32 pad4; 343} xDMXChangeDesktopAttributesReply; 344#define sz_xDMXChangeDesktopAttributesReply 32 345 346/** Wire-level description of DMXGetInputCount protocol request. */ 347typedef struct { 348 CARD8 reqType; /* DMXCode */ 349 CARD8 dmxReqType; /* X_DMXGetInputCount */ 350 CARD16 length; 351} xDMXGetInputCountReq; 352#define sz_xDMXGetInputCountReq 4 353 354/** Wire-level description of DMXGetInputCount protocol reply. */ 355typedef struct { 356 BYTE type; /* X_Reply */ 357 CARD8 unused; 358 CARD16 sequenceNumber; 359 CARD32 length; 360 CARD32 inputCount; 361 CARD32 pad0; 362 CARD32 pad1; 363 CARD32 pad2; 364 CARD32 pad3; 365 CARD32 pad4; 366} xDMXGetInputCountReply; 367#define sz_xDMXGetInputCountReply 32 368 369/** Wire-level description of DMXGetInputAttributes protocol request. */ 370typedef struct { 371 CARD8 reqType; /* DMXCode */ 372 CARD8 dmxReqType; /* X_DMXGetInputAttributes */ 373 CARD16 length; 374 CARD32 deviceId; 375} xDMXGetInputAttributesReq; 376#define sz_xDMXGetInputAttributesReq 8 377 378/** Wire-level description of DMXGetInputAttributes protocol reply. */ 379typedef struct { 380 BYTE type; /* X_Reply */ 381 CARD8 unused; 382 CARD16 sequenceNumber; 383 CARD32 length; 384 CARD32 inputType; 385 CARD32 physicalScreen; 386 CARD32 physicalId; 387 CARD32 nameLength; 388 BOOL isCore; 389 BOOL sendsCore; 390 BOOL detached; 391 CARD8 pad0; 392 CARD32 pad1; 393} xDMXGetInputAttributesReply; 394#define sz_xDMXGetInputAttributesReply 32 395 396/** Wire-level description of DMXAddInput protocol request. */ 397typedef struct { 398 CARD8 reqType; /* DMXCode */ 399 CARD8 dmxReqType; /* X_DMXAddInput */ 400 CARD16 length; 401 CARD32 displayNameLength; 402 CARD32 valueMask; 403} xDMXAddInputReq; 404#define sz_xDMXAddInputReq 12 405 406/** Wire-level description of DMXAddInput protocol reply. */ 407typedef struct { 408 BYTE type; /* X_Reply */ 409 CARD8 unused; 410 CARD16 sequenceNumber; 411 CARD32 length; 412 CARD32 status; 413 CARD32 physicalId; 414 CARD32 pad0; 415 CARD32 pad1; 416 CARD32 pad2; 417 CARD32 pad3; 418} xDMXAddInputReply; 419#define sz_xDMXAddInputReply 32 420 421/** Wire-level description of DMXRemoveInput protocol request. */ 422typedef struct { 423 CARD8 reqType; /* DMXCode */ 424 CARD8 dmxReqType; /* X_DMXRemoveInput */ 425 CARD16 length; 426 CARD32 physicalId; 427} xDMXRemoveInputReq; 428#define sz_xDMXRemoveInputReq 8 429 430/** Wire-level description of DMXRemoveInput protocol reply. */ 431typedef struct { 432 BYTE type; 433 CARD8 unused; 434 CARD16 sequenceNumber; 435 CARD32 length; 436 CARD32 status; 437 CARD32 pad0; 438 CARD32 pad1; 439 CARD32 pad2; 440 CARD32 pad3; 441 CARD32 pad4; 442} xDMXRemoveInputReply; 443#define sz_xDMXRemoveInputReply 32 444 445#endif 446