448 lines
13 KiB
C
448 lines
13 KiB
C
/**************************************************************************/
|
|
/* */
|
|
/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
|
|
/* Copyright (c) 2008-2017 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
|
|
/* Copyright (c) 2014-2022 Ulrich Sibiller <uli42@gmx.de> */
|
|
/* Copyright (c) 2014-2019 Mihai Moldovan <ionic@ionic.de> */
|
|
/* Copyright (c) 2011-2022 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
|
|
/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
|
|
/* */
|
|
/* NXCOMP, NX protocol compression and NX extensions to this software */
|
|
/* are copyright of the aforementioned persons and companies. */
|
|
/* */
|
|
/* Redistribution and use of the present software is allowed according */
|
|
/* to terms specified in the file LICENSE.nxcomp which comes in the */
|
|
/* source distribution. */
|
|
/* */
|
|
/* All rights reserved. */
|
|
/* */
|
|
/* NOTE: This software has received contributions from various other */
|
|
/* contributors, only the core maintainers and supporters are listed as */
|
|
/* copyright holders. Please contact us, if you feel you should be listed */
|
|
/* as copyright holder, as well. */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
#ifndef NXproto_H
|
|
#define NXproto_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <X11/X.h>
|
|
#include <X11/Xmd.h>
|
|
#include <X11/Xproto.h>
|
|
|
|
/*
|
|
* Force the size to match the wire protocol.
|
|
*/
|
|
|
|
#define Drawable CARD32
|
|
#define GContext CARD32
|
|
|
|
#define sz_xNXGetControlParametersReq 4
|
|
#define sz_xNXGetCleanupParametersReq 4
|
|
#define sz_xNXGetImageParametersReq 4
|
|
#define sz_xNXGetUnpackParametersReq 8
|
|
#define sz_xNXGetShmemParametersReq 16
|
|
#define sz_xNXGetFontParametersReq 4
|
|
#define sz_xNXSetExposeParametersReq 8
|
|
#define sz_xNXSetCacheParametersReq 8
|
|
#define sz_xNXStartSplitReq 8
|
|
#define sz_xNXEndSplitReq 4
|
|
#define sz_xNXCommitSplitReq 12
|
|
#define sz_xNXSetUnpackGeometryReq 24
|
|
#define sz_xNXSetUnpackColormapReq 16
|
|
#define sz_xNXSetUnpackAlphaReq 16
|
|
#define sz_xNXPutPackedImageReq 40
|
|
#define sz_xNXFreeUnpackReq 4
|
|
#define sz_xNXFinishSplitReq 4
|
|
#define sz_xNXAbortSplitReq 4
|
|
#define sz_xNXFreeSplitReq 4
|
|
|
|
#define sz_xGetControlParametersReply 32
|
|
#define sz_xGetCleanupParametersReply 32
|
|
#define sz_xGetImageParametersReply 32
|
|
#define sz_xGetUnpackParametersReply 32
|
|
#define sz_xGetShmemParametersReply 32
|
|
|
|
#define LINK_TYPE_LIMIT 5
|
|
|
|
#define LINK_TYPE_NONE 0
|
|
#define LINK_TYPE_MODEM 1
|
|
#define LINK_TYPE_ISDN 2
|
|
#define LINK_TYPE_ADSL 3
|
|
#define LINK_TYPE_WAN 4
|
|
#define LINK_TYPE_LAN 5
|
|
|
|
/*
|
|
* NX Replies.
|
|
*/
|
|
|
|
/*
|
|
* The following reply has 4 new boolean
|
|
* fields in the last protocol version.
|
|
*/
|
|
|
|
typedef struct _NXGetControlParametersReply {
|
|
BYTE type; /* Is X_Reply. */
|
|
CARD8 linkType;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32; /* Is 0. */
|
|
CARD8 localMajor;
|
|
CARD8 localMinor;
|
|
CARD8 localPatch;
|
|
CARD8 remoteMajor;
|
|
CARD8 remoteMinor;
|
|
CARD8 remotePatch;
|
|
CARD16 splitTimeout B16;
|
|
CARD16 motionTimeout B16;
|
|
CARD8 splitMode;
|
|
CARD8 pad1;
|
|
CARD32 splitSize B32;
|
|
CARD8 packMethod;
|
|
CARD8 packQuality;
|
|
CARD8 dataLevel;
|
|
CARD8 streamLevel;
|
|
CARD8 deltaLevel;
|
|
CARD8 loadCache;
|
|
CARD8 saveCache;
|
|
CARD8 startupCache;
|
|
} xNXGetControlParametersReply;
|
|
|
|
typedef struct _NXGetCleanupParametersReply {
|
|
BYTE type; /* Is X_Reply. */
|
|
BYTE pad;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32; /* Is 0. */
|
|
BOOL cleanGet;
|
|
BOOL cleanAlloc;
|
|
BOOL cleanFlush;
|
|
BOOL cleanSend;
|
|
BOOL cleanImages;
|
|
BYTE pad1, pad2, pad3;
|
|
CARD32 pad4 B32;
|
|
CARD32 pad5 B32;
|
|
CARD32 pad6 B32;
|
|
CARD32 pad7 B32;
|
|
} xNXGetCleanupParametersReply;
|
|
|
|
typedef struct _NXGetImageParametersReply {
|
|
BYTE type; /* Is X_Reply. */
|
|
BYTE pad;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32; /* Is 0. */
|
|
BOOL imageSplit;
|
|
BOOL imageMask;
|
|
BOOL imageFrame;
|
|
CARD8 imageMaskMethod;
|
|
CARD8 imageSplitMethod;
|
|
BYTE pad1, pad2, pad3;
|
|
CARD32 pad4 B32;
|
|
CARD32 pad5 B32;
|
|
CARD32 pad6 B32;
|
|
CARD32 pad7 B32;
|
|
} xNXGetImageParametersReply;
|
|
|
|
/*
|
|
* Data is made of PACK_METHOD_LIMIT values of
|
|
* type BOOL telling which unpack capabilities
|
|
* are implemented in proxy.
|
|
*/
|
|
|
|
typedef struct _NXGetUnpackParametersReply {
|
|
BYTE type; /* Is X_Reply. */
|
|
BYTE pad;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32; /* Is PACK_METHOD_LIMIT / 4 from NXpack.h. */
|
|
CARD8 entries; /* Is PACK_METHOD_LIMIT. */
|
|
BYTE pad1, pad2, pad3;
|
|
CARD32 pad4 B32;
|
|
CARD32 pad5 B32;
|
|
CARD32 pad6 B32;
|
|
CARD32 pad7 B32;
|
|
CARD32 pad8 B32;
|
|
} xNXGetUnpackParametersReply;
|
|
|
|
typedef struct _NXGetShmemParametersReply {
|
|
BYTE type; /* Is X_Reply. */
|
|
CARD8 stage; /* As in the corresponding request. */
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32; /* Is 0. */
|
|
BOOL clientEnabled; /* SHM on path agent to proxy. */
|
|
BOOL serverEnabled; /* SHM on path proxy to X server. */
|
|
BYTE pad1, pad2; /* Previous values can be checked */
|
|
CARD32 clientSize B32; /* at end of stage 2. */
|
|
CARD32 serverSize B32;
|
|
CARD32 pad3 B32;
|
|
CARD32 pad4 B32;
|
|
CARD32 pad5 B32;
|
|
} xNXGetShmemParametersReply;
|
|
|
|
typedef struct _NXGetFontParametersReply {
|
|
BYTE type; /* Is X_Reply. */
|
|
BYTE pad1;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32; /* Is length of path string + 1 / 4. */
|
|
CARD32 pad2 B32;
|
|
CARD32 pad3 B32;
|
|
CARD32 pad4 B32;
|
|
CARD32 pad5 B32;
|
|
CARD32 pad6 B32;
|
|
CARD32 pad7 B32;
|
|
} xNXGetFontParametersReply;
|
|
|
|
/*
|
|
* NX Requests.
|
|
*/
|
|
|
|
typedef struct _NXGetControlParametersReq {
|
|
CARD8 reqType;
|
|
BYTE pad;
|
|
CARD16 length B16;
|
|
} xNXGetControlParametersReq;
|
|
|
|
typedef struct _NXGetCleanupParametersReq {
|
|
CARD8 reqType;
|
|
BYTE pad;
|
|
CARD16 length B16;
|
|
} xNXGetCleanupParametersReq;
|
|
|
|
typedef struct _NXGetImageParametersReq {
|
|
CARD8 reqType;
|
|
BYTE pad;
|
|
CARD16 length B16;
|
|
} xNXGetImageParametersReq;
|
|
|
|
typedef struct _NXGetUnpackParametersReq {
|
|
CARD8 reqType;
|
|
BYTE pad;
|
|
CARD16 length B16;
|
|
CARD8 entries;
|
|
BYTE pad1, pad2, pad3;
|
|
} xNXGetUnpackParametersReq;
|
|
|
|
typedef struct _NXGetShmemParametersReq {
|
|
CARD8 reqType;
|
|
CARD8 stage; /* It is between 0 and 2. */
|
|
CARD16 length B16;
|
|
BOOL enableClient; /* X client side support is */
|
|
BOOL enableServer; /* not implemented yet. */
|
|
BYTE pad1, pad2;
|
|
CARD32 clientSegment; /* XID identifying the shared */
|
|
CARD32 serverSegment; /* memory segments. */
|
|
} xNXGetShmemParametersReq;
|
|
|
|
typedef struct _NXGetFontParametersReq {
|
|
CARD8 reqType;
|
|
CARD8 pad;
|
|
CARD16 length B16;
|
|
} xNXGetFontParametersReq;
|
|
|
|
/*
|
|
* The available split modes.
|
|
*/
|
|
|
|
#define NXSplitModeDefault 0
|
|
#define NXSplitModeAsync 1
|
|
#define NXSplitModeSync 2
|
|
|
|
typedef struct _NXStartSplitReq {
|
|
CARD8 reqType;
|
|
CARD8 resource;
|
|
CARD16 length B16;
|
|
CARD8 mode;
|
|
BYTE pad1, pad2, pad3;
|
|
} xNXStartSplitReq;
|
|
|
|
typedef struct _NXEndSplitReq {
|
|
CARD8 reqType;
|
|
CARD8 resource;
|
|
CARD16 length B16;
|
|
} xNXEndSplitReq;
|
|
|
|
typedef struct _NXCommitSplitReq {
|
|
CARD8 reqType;
|
|
CARD8 resource;
|
|
CARD16 length B16;
|
|
CARD8 propagate;
|
|
CARD8 request;
|
|
BYTE pad1, pad2;
|
|
CARD32 position B32;
|
|
} xNXCommitSplitReq;
|
|
|
|
typedef struct _NXFinishSplitReq {
|
|
CARD8 reqType;
|
|
CARD8 resource;
|
|
CARD16 length B16;
|
|
} xNXFinishSplitReq;
|
|
|
|
typedef struct _NXAbortSplitReq {
|
|
CARD8 reqType;
|
|
CARD8 resource;
|
|
CARD16 length B16;
|
|
} xNXAbortSplitReq;
|
|
|
|
typedef struct _NXFreeSplitReq {
|
|
CARD8 reqType;
|
|
CARD8 resource;
|
|
CARD16 length B16;
|
|
} xNXFreeSplitReq;
|
|
|
|
typedef struct _NXSetExposeParametersReq {
|
|
CARD8 reqType;
|
|
BYTE pad;
|
|
CARD16 length B16;
|
|
BOOL expose;
|
|
BOOL graphicsExpose;
|
|
BOOL noExpose;
|
|
BYTE pad1;
|
|
} xNXSetExposeParametersReq;
|
|
|
|
typedef struct _NXSetCacheParametersReq {
|
|
CARD8 reqType;
|
|
BYTE pad;
|
|
CARD16 length B16;
|
|
BOOL enableCache;
|
|
BOOL enableSplit;
|
|
BOOL enableSave;
|
|
BOOL enableLoad;
|
|
} xNXSetCacheParametersReq;
|
|
|
|
typedef struct _NXSetUnpackGeometryReq {
|
|
CARD8 reqType;
|
|
CARD8 resource;
|
|
CARD16 length B16;
|
|
CARD8 depth1Bpp;
|
|
CARD8 depth4Bpp;
|
|
CARD8 depth8Bpp;
|
|
CARD8 depth16Bpp;
|
|
CARD8 depth24Bpp;
|
|
CARD8 depth32Bpp;
|
|
BYTE pad1, pad2;
|
|
CARD32 redMask B32;
|
|
CARD32 greenMask B32;
|
|
CARD32 blueMask B32;
|
|
} xNXSetUnpackGeometryReq;
|
|
|
|
typedef struct _NXSetUnpackColormapReq {
|
|
CARD8 reqType;
|
|
CARD8 resource;
|
|
CARD16 length B16;
|
|
CARD8 method;
|
|
BYTE pad1, pad2, pad3;
|
|
CARD32 srcLength B32;
|
|
CARD32 dstLength B32;
|
|
} xNXSetUnpackColormapReq;
|
|
|
|
typedef struct _NXSetUnpackAlphaReq {
|
|
CARD8 reqType;
|
|
CARD8 resource;
|
|
CARD16 length B16;
|
|
CARD8 method;
|
|
BYTE pad1, pad2, pad3;
|
|
CARD32 srcLength B32;
|
|
CARD32 dstLength B32;
|
|
} xNXSetUnpackAlphaReq;
|
|
|
|
typedef struct _NXPutPackedImageReq {
|
|
CARD8 reqType;
|
|
CARD8 resource;
|
|
CARD16 length B16;
|
|
Drawable drawable B32;
|
|
GContext gc B32;
|
|
CARD8 method;
|
|
CARD8 format;
|
|
CARD8 srcDepth;
|
|
CARD8 dstDepth;
|
|
CARD32 srcLength B32;
|
|
CARD32 dstLength B32;
|
|
INT16 srcX B16, srcY B16;
|
|
CARD16 srcWidth B16, srcHeight B16;
|
|
INT16 dstX B16, dstY B16;
|
|
CARD16 dstWidth B16, dstHeight B16;
|
|
} xNXPutPackedImageReq;
|
|
|
|
typedef struct _NXFreeUnpackReq {
|
|
CARD8 reqType;
|
|
CARD8 resource;
|
|
CARD16 length B16;
|
|
} xNXFreeUnpackReq;
|
|
|
|
/*
|
|
* The X_NXSplitData and X_NXSplitEvent opcodes
|
|
* are used internally and are ignored if coming
|
|
* from the agent.
|
|
*/
|
|
|
|
#define X_NXInternalGenericData 0
|
|
#define X_NXInternalGenericReply 1
|
|
#define X_NXInternalGenericRequest 255
|
|
|
|
#define X_NXInternalShapeExtension 128
|
|
#define X_NXInternalRenderExtension 129
|
|
|
|
#define X_NXFirstOpcode 230
|
|
#define X_NXLastOpcode 252
|
|
|
|
#define X_NXGetControlParameters 230
|
|
#define X_NXGetCleanupParameters 231
|
|
#define X_NXGetImageParameters 232
|
|
#define X_NXGetUnpackParameters 233
|
|
#define X_NXStartSplit 234
|
|
#define X_NXEndSplit 235
|
|
#define X_NXSplitData 236
|
|
#define X_NXCommitSplit 237
|
|
#define X_NXSetExposeParameters 240
|
|
#define X_NXSetUnpackGeometry 241
|
|
#define X_NXSetUnpackColormap 242
|
|
#define X_NXPutPackedImage 243
|
|
#define X_NXSplitEvent 244
|
|
#define X_NXGetShmemParameters 245
|
|
#define X_NXSetUnpackAlpha 246
|
|
#define X_NXFreeUnpack 247
|
|
#define X_NXFinishSplit 248
|
|
#define X_NXAbortSplit 249
|
|
#define X_NXFreeSplit 250
|
|
#define X_NXGetFontParameters 251
|
|
#define X_NXSetCacheParameters 252
|
|
|
|
/*
|
|
* The following events are received by the agent
|
|
* in the form of a ClientMessage with the value
|
|
* 0 in fields atom and window. The format is
|
|
* always 32. Event specific data starts at byte
|
|
* offset 12.
|
|
*
|
|
* These events are sent by the NX transport to
|
|
* notify the agent about the result of a split
|
|
* operation.
|
|
*/
|
|
|
|
#define NXNoSplitNotify 1
|
|
#define NXStartSplitNotify 2
|
|
#define NXCommitSplitNotify 3
|
|
#define NXEndSplitNotify 4
|
|
#define NXEmptySplitNotify 5
|
|
|
|
/*
|
|
* Notifications of collect events. These events
|
|
* don't come from the NX transport but are put
|
|
* back in client's event queue by NXlib.
|
|
*/
|
|
|
|
#define NXCollectImageNotify 8
|
|
#define NXCollectPropertyNotify 9
|
|
#define NXCollectGrabPointerNotify 10
|
|
#define NXCollectInputFocusNotify 11
|
|
|
|
#undef Drawable
|
|
#undef GContext
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* NXproto_H */
|