multibufst.h
资源名称:X264CODEC.rar [点击查看]
上传用户:lctgjx
上传日期:2022-06-04
资源大小:8887k
文件大小:18k
源码类别:
流媒体/Mpeg4/MP4
开发平台:
Visual C++
- /*
- * $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_ */