diff options
Diffstat (limited to 'nx-X11/include/extensions/multibufst.h')
-rw-r--r-- | nx-X11/include/extensions/multibufst.h | 609 |
1 files changed, 0 insertions, 609 deletions
diff --git a/nx-X11/include/extensions/multibufst.h b/nx-X11/include/extensions/multibufst.h deleted file mode 100644 index 8469a16db..000000000 --- a/nx-X11/include/extensions/multibufst.h +++ /dev/null @@ -1,609 +0,0 @@ -/* - * $Xorg: multibufst.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - */ - -/* $XFree86: xc/include/extensions/multibufst.h,v 3.8 2001/12/19 21:37:29 dawes Exp $ */ - -#ifndef _MULTIBUFST_H_ -#define _MULTIBUFST_H_ - -/* - * Protocol requests constants and alignment values - */ - -#include "multibuf.h" -#ifdef _MULTIBUF_SERVER_ -#include "inputstr.h" -#endif - -#if !defined(UNIXCPP) || defined(ANSICPP) -#define MbufGetReq(name,req,info) GetReq (name, req); \ - req->reqType = info->codes->major_opcode; \ - req->mbufReqType = X_##name; -#else -#define MbufGetReq(name,req,info) GetReq (name, req); \ - req->reqType = info->codes->major_opcode; \ - req->mbufReqType = X_/**/name; -#endif - -#define Window CARD32 -#define Drawable CARD32 -#define VisualID CARD32 -#define Multibuffer CARD32 - -typedef struct xMbufBufferInfo { - CARD32 visualID B32; /* associated visual */ - CARD16 maxBuffers B16; /* maximum supported buffers */ - CARD8 depth; /* depth of visual (redundant) */ - CARD8 unused; -} xMbufBufferInfo; -#define sz_xMbufBufferInfo 8 - -typedef struct { - BYTE type; - BYTE unused; - CARD16 sequenceNumber B16; - CARD32 buffer B32; /* affected buffer */ - BYTE state; /* current status */ - CARD8 unused1; - CARD16 unused2 B16; - CARD32 unused3 B32; - CARD32 unused4 B32; - CARD32 unused5 B32; - CARD32 unused6 B32; - CARD32 unused7 B32; -} xMbufClobberNotifyEvent; - -typedef struct { - BYTE type; - BYTE unused; - CARD16 sequenceNumber B16; - CARD32 buffer B32; /* affected buffer */ - CARD32 timeStamp B32; /* update time */ - CARD32 unused1 B32; - CARD32 unused2 B32; - CARD32 unused3 B32; - CARD32 unused4 B32; - CARD32 unused5 B32; - CARD32 unused6 B32; -} xMbufUpdateNotifyEvent; - -typedef struct { - CARD8 reqType; /* always codes->major_opcode */ - CARD8 mbufReqType; /* always X_MbufGetBufferVersion */ - CARD16 length B16; -} xMbufGetBufferVersionReq; -#define sz_xMbufGetBufferVersionReq 4 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD8 majorVersion; /* major version of Multi-Buffering protocol */ - CARD8 minorVersion; /* minor version of Multi-Buffering protocol */ - CARD16 pad1 B16; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; -} xMbufGetBufferVersionReply; -#define sz_xMbufGetBufferVersionReply 32 - -typedef struct { - CARD8 reqType; /* always codes->major_opcode */ - CARD8 mbufReqType; /* always X_MbufCreateImageBuffers */ - CARD16 length B16; - CARD32 window B32; /* associated window */ - CARD8 updateAction; /* action at update */ - CARD8 updateHint; /* hint as to frequency of updates */ - CARD16 unused; -} xMbufCreateImageBuffersReq; /* followed by buffer ids */ -#define sz_xMbufCreateImageBuffersReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD16 numberBuffer B16; /* number successfully allocated */ - CARD16 unused1 B16; - CARD32 unused2 B32; - CARD32 unused3 B32; - CARD32 unused4 B32; - CARD32 unused5 B32; - CARD32 unused6 B32; -} xMbufCreateImageBuffersReply; -#define sz_xMbufCreateImageBuffersReply 32 - -typedef struct { - CARD8 reqType; /* always codes->major_opcode */ - CARD8 mbufReqType; /* always X_MbufDestroyImageBuffers */ - CARD16 length B16; - CARD32 window B32; /* associated window */ -} xMbufDestroyImageBuffersReq; -#define sz_xMbufDestroyImageBuffersReq 8 - -typedef struct { - CARD8 reqType; /* always codes->major_opcode */ - CARD8 mbufReqType; /* always X_MbufDisplayImageBuffers */ - CARD16 length B16; - CARD16 minDelay B16; /* minimum time between last update and now */ - CARD16 maxDelay B16; /* maximum time between last update and now */ -} xMbufDisplayImageBuffersReq; /* followed by list of buffers */ -#define sz_xMbufDisplayImageBuffersReq 8 - -typedef struct { - CARD8 reqType; /* always codes->major_opcode */ - CARD8 mbufReqType; /* always X_MbufSetMBufferAttributes */ - CARD16 length B16; - CARD32 window B32; /* associated window */ - CARD32 valueMask B32; /* modified entries */ -} xMbufSetMBufferAttributesReq; /* followed by values */ -#define sz_xMbufSetMBufferAttributesReq 12 - -typedef struct { - CARD8 reqType; /* always codes->major_opcode */ - CARD8 mbufReqType; /* always X_MbufGetMBufferAttributes */ - CARD16 length B16; - CARD32 window B32; /* associated window */ -} xMbufGetMBufferAttributesReq; -#define sz_xMbufGetMBufferAttributesReq 8 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD16 displayedBuffer B16; /* currently visible buffer */ - CARD8 updateAction; - CARD8 updateHint; - CARD8 windowMode; - CARD8 unused0; - CARD16 unused1 B16; - CARD32 unused2 B32; - CARD32 unused3 B32; - CARD32 unused4 B32; - CARD32 unused5 B32; -} xMbufGetMBufferAttributesReply; -#define sz_xMbufGetMBufferAttributesReply 32 - -typedef struct { - CARD8 reqType; /* always codes->major_opcode */ - CARD8 mbufReqType; /* always X_MbufSetBufferAttributes */ - CARD16 length B16; - CARD32 buffer B32; - CARD32 valueMask B32; -} xMbufSetBufferAttributesReq; /* followed by values */ -#define sz_xMbufSetBufferAttributesReq 12 - -typedef struct { - CARD8 reqType; /* always codes->major_opcode */ - CARD8 mbufReqType; /* always X_MbufGetBufferAttributes */ - CARD16 length B16; - CARD32 buffer B32; -} xMbufGetBufferAttributesReq; -#define sz_xMbufGetBufferAttributesReq 8 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 window B32; - CARD32 eventMask B32; - CARD16 bufferIndex B16; - CARD8 side; - CARD8 unused0; - CARD32 unused1 B32; - CARD32 unused2 B32; - CARD32 unused3 B32; -} xMbufGetBufferAttributesReply; -#define sz_xMbufGetBufferAttributesReply 32 - -typedef struct { - CARD8 reqType; /* always codes->major_opcode */ - CARD8 mbufReqType; /* always X_MbufGetBufferInfo */ - CARD16 length B16; - Drawable drawable B32; -} xMbufGetBufferInfoReq; -#define sz_xMbufGetBufferInfoReq 8 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD16 normalInfo B16; - CARD16 stereoInfo B16; - CARD32 unused1 B32; - CARD32 unused2 B32; - CARD32 unused3 B32; - CARD32 unused4 B32; - CARD32 unused5 B32; -} xMbufGetBufferInfoReply; /* followed by buffer infos */ -#define sz_xMbufGetBufferInfoReply 32 - - -typedef struct { - CARD8 reqType; /* always codes->major_opcode */ - CARD8 mbufReqType; /* always X_MbufCreateStereoWindow */ - CARD16 length B16; - CARD8 unused0; - CARD8 unused1; - CARD8 unused2; - CARD8 depth; - Window wid B32; - Window parent B32; - Multibuffer left B32; /* associated buffers */ - Multibuffer right B32; - INT16 x B16; - INT16 y B16; - CARD16 width B16; - CARD16 height B16; - CARD16 borderWidth B16; -#if defined(__cplusplus) || defined(c_plusplus) - CARD16 c_class B16; -#else - CARD16 class B16; -#endif - VisualID visual B32; - CARD32 mask B32; -} xMbufCreateStereoWindowReq; /* followed by value list */ -#define sz_xMbufCreateStereoWindowReq 44 - -typedef struct { - CARD8 reqType; /* always codes->major_opcode */ - CARD8 mbufReqType; /* always X_MbufClearImageBufferArea */ - CARD16 length B16; - Multibuffer buffer B32; - INT16 x B16; - INT16 y B16; - CARD16 width B16; - CARD16 height B16; - CARD8 unused0; - CARD8 unused1; - CARD8 unused2; - BOOL exposures; -} xMbufClearImageBufferAreaReq; -#define sz_xMbufClearImageBufferAreaReq 20 - -#undef Window -#undef Drawable -#undef VisualID -#undef Multibuffer - - -#ifdef _MULTIBUF_SERVER_ -/* Macros for wrapping and unwrapping functions */ - -#define SWAP_FUNC_VECTOR(pSTRUCT1,pSTRUCT2,DATA_TYPE,FUNC_NAME) \ -{ \ - DATA_TYPE (* tmpFn)(); \ - \ - tmpFn = pSTRUCT1->FUNC_NAME; \ - pSTRUCT1->FUNC_NAME = pSTRUCT2->FUNC_NAME; \ - pSTRUCT2->FUNC_NAME = tmpFn; \ -} - -#if !defined(UNIXCPP) || defined(ANSICPP) -#define WRAP_SCREEN_FUNC(pSCREEN,pPRIV,FUNC_NAME, PRIV_FUNC_NAME) \ -{ \ - if ((pPRIV->funcsWrapped & FUNC_NAME##Mask) == 0) \ - { \ - pPRIV->FUNC_NAME = pSCREEN->FUNC_NAME; \ - pSCREEN->FUNC_NAME = PRIV_FUNC_NAME; \ - pPRIV->funcsWrapped |= FUNC_NAME##Mask; \ - } \ -} - -#define UNWRAP_SCREEN_FUNC(pSCREEN,pPRIV,DATA_TYPE,FUNC_NAME) \ -{ \ - SWAP_FUNC_VECTOR(pSCREEN,pPRIV,DATA_TYPE,FUNC_NAME); \ - pPRIV->funcsWrapped &= ~(FUNC_NAME##Mask); \ -} - -#define REWRAP_SCREEN_FUNC(pSCREEN,pPRIV,DATA_TYPE,FUNC_NAME) \ -{ \ - if (MB_SCREEN_PRIV(pSCREEN)->mbufWindowCount) \ - { \ - SWAP_FUNC_VECTOR(pSCREEN,pPRIV,DATA_TYPE,FUNC_NAME); \ - pPRIV->funcsWrapped |= FUNC_NAME##Mask; \ - } \ -} -#else -#define WRAP_SCREEN_FUNC(pSCREEN,pPRIV,FUNC_NAME, PRIV_FUNC_NAME) \ -{ \ - if ((pPRIV->funcsWrapped & FUNC_NAME/**/Mask) == 0) \ - { \ - pPRIV->FUNC_NAME = pSCREEN->FUNC_NAME; \ - pSCREEN->FUNC_NAME = PRIV_FUNC_NAME; \ - pPRIV->funcsWrapped |= FUNC_NAME/**/Mask; \ - } \ -} - -#define UNWRAP_SCREEN_FUNC(pSCREEN,pPRIV,DATA_TYPE,FUNC_NAME) \ -{ \ - SWAP_FUNC_VECTOR(pSCREEN,pPRIV,DATA_TYPE,FUNC_NAME); \ - pPRIV->funcsWrapped &= ~(FUNC_NAME/**/Mask); \ -} - -#define REWRAP_SCREEN_FUNC(pSCREEN,pPRIV,DATA_TYPE,FUNC_NAME) \ -{ \ - if (MB_SCREEN_PRIV(pSCREEN)->mbufWindowCount) \ - { \ - SWAP_FUNC_VECTOR(pSCREEN,pPRIV,DATA_TYPE,FUNC_NAME); \ - pPRIV->funcsWrapped |= FUNC_NAME/**/Mask; \ - } \ -} -#endif - -/* The _Multibuffer and _Multibuffers structures below refer to each other, - * so we need this forward declaration - */ -typedef struct _Multibuffers *MultibuffersPtr; - -/* - * per-Multibuffer data - */ - -typedef struct _Multibuffer { - MultibuffersPtr pMultibuffers; /* associated window data */ - Mask eventMask; /* MultibufferClobberNotifyMask|ExposureMask|MultibufferUpdateNotifyMask */ - Mask otherEventMask; /* mask of all other clients event masks */ - OtherClients *otherClients; /* other clients that want events */ - int number; /* index of this buffer into array */ - int side; /* always Mono */ - int clobber; /* Unclobbered, PartiallyClobbered, FullClobbered */ - PixmapPtr pPixmap; /* associated pixmap */ -} MultibufferRec, *MultibufferPtr; - -/* - * per-window data - */ - -typedef struct _Multibuffers { - WindowPtr pWindow; /* associated window */ - int numMultibuffer; /* count of buffers */ - int refcnt; /* ref count for delete */ - int displayedMultibuffer; /* currently active buffer */ - int updateAction; /* Undefined, Background, Untouched, Copied */ - int updateHint; /* Frequent, Intermittent, Static */ - int windowMode; /* always Mono */ - - TimeStamp lastUpdate; /* time of last update */ - - unsigned short width, height; /* last known window size */ - short x, y; /* for static gravity */ - - MultibufferPtr buffers; /* array of numMultibuffer buffers */ -} MultibuffersRec; - -/* - * per-screen data - */ -typedef struct _MultibufferScreen { - PositionWindowProcPtr PositionWindow; /* pWin, x,y */ -} MultibufferScreenRec, *MultibufferScreenPtr; - -/* - * per display-image-buffers request data. - */ - -typedef struct _DisplayRequest { - struct _DisplayRequest *next; - TimeStamp activateTime; - ClientPtr pClient; - XID id; -} DisplayRequestRec, *DisplayRequestPtr; - -#define DestroyWindowMask (1L<<0) -#define PositionWindowMask (1L<<1) -#define PostValidateTreeMask (1L<<2) -#define ClipNotifyMask (1L<<3) -#define WindowExposuresMask (1L<<4) -#define CopyWindowMask (1L<<5) -#define ClearToBackgroundMask (1L<<6) -#define ChangeWindowAttributesMask (1L<<7) - -extern int MultibufferScreenIndex; -extern int MultibufferWindowIndex; - -extern RESTYPE MultibufferDrawableResType; - -extern void MultibufferUpdate( /* pMbuffer, time */ - MultibufferPtr /* pMultibuffer */, - CARD32 /* time */ - ); -extern void MultibufferExpose( /* pMbuffer, pRegion */ - MultibufferPtr /* pMultibuffer */, - RegionPtr /* pRegion */ - ); -extern void MultibufferClobber( /* pMbuffer */ - MultibufferPtr /* pMultibuffer */ - ); - -typedef struct _mbufWindow *mbufWindowPtr; - -/* - * per-buffer data - */ - -#define MB_DISPLAYED_BUFFER(pMBWindow) \ - ((pMBWindow)->buffers + (pMBWindow)->displayedMultibuffer) - -typedef struct _mbufBuffer { - mbufWindowPtr pMBWindow; /* associated window data */ - Mask eventMask; /* client event mask */ - Mask otherEventMask; /* union of other clients' event masks */ - OtherClientsPtr otherClients; /* other clients that want events */ - int number; /* index of this buffer into array */ - int side; /* stero side: always Mono */ - int clobber; /* clober state */ - DrawablePtr pDrawable; /* associated drawable */ -} mbufBufferRec, *mbufBufferPtr; - - -/* - * per-window data - */ - -#define MB_WINDOW_PRIV(pWin) \ - ((mbufWindowPtr)((pWin)->devPrivates[MultibufferWindowIndex].ptr)) - -typedef struct _mbufWindow { - WindowPtr pWindow; /* associated window */ - int numMultibuffer; /* count of buffers */ - mbufBufferPtr buffers; /* array of (numMultibuffer) buffers */ - int displayedMultibuffer; /* currently active buffer */ - int updateAction; /* Undefined, Background, - Untouched, Copied */ - int updateHint; /* Frequent, Intermittent, Static */ - int windowMode; /* always Mono */ - TimeStamp lastUpdate; /* time of last update */ - short x, y; /* for static gravity */ - unsigned short width, height; /* last known window size */ - DevUnion devPrivate; -} mbufWindowRec; - - -/* - * per-screen data - */ - -#define MB_SCREEN_PRIV(pScreen) \ - ((mbufScreenPtr)((pScreen)->devPrivates[MultibufferScreenIndex].ptr)) - -typedef struct _mbufScreen { - long mbufWindowCount; /* count of multibuffered windows */ - - /* Wrap pScreen->DestroyWindow */ - DestroyWindowProcPtr DestroyWindow; - long funcsWrapped; /* flags which functions are wrapped */ - - /* Initialized by device-dependent section */ - int nInfo; /* number of buffer info rec's */ - xMbufBufferInfo *pInfo; /* buffer info (for Normal buffers) */ - - int (* CreateImageBuffers)( - WindowPtr /* pWin */, - int /* nbuf */, - XID * /* ids */, - int /* action */, - int /* hint */ - ); - void (* DestroyImageBuffers)( - WindowPtr /* pWin */ - ); - void (* DisplayImageBuffers)( - ScreenPtr /* pScreen */, - mbufBufferPtr * /* ppMBBuffer */, - mbufWindowPtr * /* ppMBWindow */, - int /* nbuf */ - ); - void (* ClearImageBufferArea)( - mbufBufferPtr /* pMBBuffer */, - short /* x */, - short /* y */, - unsigned short /* width */, - unsigned short /* height */, - Bool /* exposures */ - ); - Bool (* ChangeMBufferAttributes)( /* pMBWindow, vmask */ - /* FIXME */ - ); - Bool (* ChangeBufferAttributes)( /* pMBBuffer, vmask */ - /* FIXME */ - ); - void (* DeleteBufferDrawable)( - DrawablePtr /* pDrawable */ - ); - void (* WrapScreenFuncs)( - ScreenPtr /* pScreen */ - ); - void (* ResetProc)( - ScreenPtr /* pScreen */ - ); - DevUnion devPrivate; -} mbufScreenRec, *mbufScreenPtr; - - -/* Privates to mbufScreenRec */ - -#ifdef _MULTIBUF_PIXMAP_ -#define MB_SCREEN_PRIV_PIXMAP(pScreen) \ - ((mbufPixmapPrivPtr) MB_SCREEN_PRIV((pScreen))->devPrivate.ptr) - -typedef struct _mbufPixmapPriv -{ - /* Pointers to wrapped functions */ - PositionWindowProcPtr PositionWindow; /* pWin, x,y */ - long funcsWrapped; /* flags which functions are wrapped */ -} mbufPixmapPrivRec, *mbufPixmapPrivPtr; -#endif /* _MULTIBUF_PIXMAP_ */ - - -#ifdef _MULTIBUF_BUFFER_ - -extern int frameWindowPrivateIndex; - -#define MB_SCREEN_PRIV_BUFFER(pScreen) \ - ((mbufBufferPrivPtr) MB_SCREEN_PRIV((pScreen))->devPrivate.ptr) - -typedef struct _mbufBufferPriv -{ - DevUnion *frameBuffer; /* Array of screen framebuffers */ - DevUnion selectPlane; /* Plane(s) that select displayed buffer */ - - /* - * Note: subtractRgn and unionRgn may overlap. subtractRgn is a union - * of all the old clipLists of the windows that are displaying - * the backbuffer. unionRgn is the union of all the new clipLists - * of the same windows. - */ - - RegionRec backBuffer; /* Area of screen displaying back buffer */ - RegionRec subtractRgn; /* Regions lost to backBuffer */ - RegionRec unionRgn; /* Regions gained by backBuffer */ - Bool rgnChanged; /* TRUE if "backBuffer" needs to be updated */ - - void (* CopyBufferBits)(); /* pMBWindow, srcBufferNum, dstBufferNum */ - void (* DrawSelectPlane)(); /* pScreen, selectPlane, pRegion, bufferNum */ - - /* Pointers to wrapped functions */ - PostValidateTreeProcPtr PostValidateTree; /* pParent, pChild, kind */ - ClipNotifyProcPtr ClipNotify; /* pWin, dx, dy */ - WindowExposuresProcPtr WindowExposures; /* pWin, pRegion */ - CopyWindowProcPtr CopyWindow; /* pWin, oldPt, pOldRegion */ - ClearToBackgroundProcPtr ClearToBackground; /* pWin, x,y,w,h, sendExpose */ - ChangeWindowAttributesProcPtr ChangeWindowAttributes; /* pWin, vmask */ - long funcsWrapped; /* flags which functions are wrapped */ - unsigned inClearToBackground:1; /* used by WindowExposure */ -} mbufBufferPrivRec, *mbufBufferPrivPtr; -#endif /* _MULTIBUF_BUFFER_ */ - -#endif /* _MULTIBUF_SERVER_ */ -#endif /* _MULTIBUFST_H_ */ |