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