74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * $Xorg: multibuf.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/multibuf.h,v 3.4 2001/12/14 19:53:28 dawes Exp $ */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#ifndef _MULTIBUF_H_
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define _MULTIBUF_H_
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#include <X11/Xfuncproto.h>
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MULTIBUFFER_PROTOCOL_NAME "Multi-Buffering"
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MULTIBUFFER_MAJOR_VERSION 1 /* current version numbers */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MULTIBUFFER_MINOR_VERSION 1 /* has ClearImageBufferArea */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define X_MbufGetBufferVersion 0
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define X_MbufCreateImageBuffers 1
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define X_MbufDestroyImageBuffers 2
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define X_MbufDisplayImageBuffers 3
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define X_MbufSetMBufferAttributes 4
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define X_MbufGetMBufferAttributes 5
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define X_MbufSetBufferAttributes 6
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define X_MbufGetBufferAttributes 7
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define X_MbufGetBufferInfo 8
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define X_MbufCreateStereoWindow 9
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define X_MbufClearImageBufferArea 10
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * update_action field
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferUpdateActionUndefined 0
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferUpdateActionBackground 1
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferUpdateActionUntouched 2
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferUpdateActionCopied 3
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * update_hint field
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferUpdateHintFrequent 0
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferUpdateHintIntermittent 1
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferUpdateHintStatic 2
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * valuemask fields
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferWindowUpdateHint (1L << 0)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferBufferEventMask (1L << 0)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * mono vs. stereo and left vs. right
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferModeMono 0
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferModeStereo 1
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferSideMono 0
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferSideLeft 1
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferSideRight 2
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * clobber state
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferUnclobbered 0
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferPartiallyClobbered 1
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferFullyClobbered 2
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * event stuff
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferClobberNotifyMask 0x02000000
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferUpdateNotifyMask 0x04000000
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferClobberNotify 0
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferUpdateNotify 1
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferNumberEvents (MultibufferUpdateNotify + 1)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferBadBuffer 0
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#define MultibufferNumberErrors (MultibufferBadBuffer + 1)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#ifndef _MULTIBUF_SERVER_
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * Extra definitions that will only be needed in the client
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef XID Multibuffer;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int type; /* of event */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned long serial; /* # of last request processed by server */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int send_event; /* true if this came frome a SendEvent request */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display *display; /* Display the event was read from */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Multibuffer buffer; /* buffer of event */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int state; /* see Clobbered constants above */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XmbufClobberNotifyEvent;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int type; /* of event */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned long serial; /* # of last request processed by server */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int send_event; /* true if this came frome a SendEvent request */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display *display; /* Display the event was read from */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Multibuffer buffer; /* buffer of event */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XmbufUpdateNotifyEvent;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * per-window attributes that can be got
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int displayed_index; /* which buffer is being displayed */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int update_action; /* Undefined, Background, Untouched, Copied */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int update_hint; /* Frequent, Intermittent, Static */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int window_mode; /* Mono, Stereo */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int nbuffers; /* Number of buffers */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Multibuffer *buffers; /* Buffers */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XmbufWindowAttributes;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * per-window attributes that can be set
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int update_hint; /* Frequent, Intermittent, Static */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XmbufSetWindowAttributes;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * per-buffer attributes that can be got
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Window window; /* which window this belongs to */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned long event_mask; /* events that have been selected */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int buffer_index; /* which buffer is this */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int side; /* Mono, Left, Right */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XmbufBufferAttributes;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * per-buffer attributes that can be set
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned long event_mask; /* events that have been selected */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XmbufSetBufferAttributes;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync/*
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync * per-screen buffer info (there will be lists of them)
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef struct {
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync VisualID visualid; /* visual usuable at this depth */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int max_buffers; /* most buffers for this visual */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int depth; /* depth of buffers to be created */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync} XmbufBufferInfo;
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync_XFUNCPROTOBEGIN
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern Bool XmbufQueryExtension(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int* /* event_base_return */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int* /* error_base_return */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern Status XmbufGetVersion(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int* /* major_version_return */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int* /* minor_version_return */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern int XmbufCreateBuffers(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Window /* w */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* count */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* update_action */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* update_hint */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Multibuffer* /* buffers */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern void XmbufDestroyBuffers(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Window /* window */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern void XmbufDisplayBuffers(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* count */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Multibuffer* /* buffers */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* min_delay */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* max_delay */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern Status XmbufGetWindowAttributes(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Window /* w */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XmbufWindowAttributes* /* attr */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern void XmbufChangeWindowAttributes(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Window /* w */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned long /* valuemask */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XmbufSetWindowAttributes* /* attr */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern Status XmbufGetBufferAttributes(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Multibuffer /* b */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XmbufBufferAttributes* /* attr */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern void XmbufChangeBufferAttributes(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Multibuffer /* b */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned long /* valuemask */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XmbufSetBufferAttributes* /* attr */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern Status XmbufGetScreenInfo(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Drawable /* d */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int* /* nmono_return */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XmbufBufferInfo** /* mono_info_return */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int* /* nstereo_return */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XmbufBufferInfo** /* stereo_info_return */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern Window XmbufCreateStereoWindow(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Window /* parent */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* x */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* y */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned int /* width */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned int /* height */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned int /* border_width */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* depth */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned int /* class */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Visual* /* visual */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned long /* valuemask */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XSetWindowAttributes* /* attr */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Multibuffer* /* leftp */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Multibuffer* /* rightp */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern void XmbufClearBufferArea(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Display* /* dpy */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Multibuffer /* buffer */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* x */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* y */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned int /* width */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync unsigned int /* height */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Bool /* exposures */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync_XFUNCPROTOEND
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#else
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#include "scrnintstr.h"
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsynctypedef Bool (* mbInitFunc)();
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncstruct _mbufScreen; /* declared in multibufst.h */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern void RegisterMultibufferInit(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync ScreenPtr /* pScreen */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync Bool (* /* bufMultibufferInit */)(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedNestedPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync ScreenPtr /* pScreen */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync struct _mbufScreen * /* pMBScreen */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync )
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncstruct xMbufBufferInfo; /* declared in multibufst.h */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern void RegisterDoubleBufferHardware(
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync ScreenPtr /* pScreen */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* nInfo */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync struct xMbufBufferInfo * /* pInfo */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync DevUnion * /* frameBuffer */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync DevUnion /* selectPlane */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync void (* /* CopyBufferBitsFunc */ )(),
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync void (* /* DrawSelectPlaneFunc */ )()
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern int CreateImageBuffers (
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync WindowPtr /* pWin */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* nbuf */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XID * /* ids */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* action */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* hint */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern void DestroyImageBuffers (
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync WindowPtr /* pWin */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsyncextern int DisplayImageBuffers (
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#if NeedFunctionPrototypes
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync XID * /* ids */,
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync int /* nbuf */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync);
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif /* _MULTIBUF_SERVER_ */
74fe172698ba936102e120dae998c9ebd09cfbdfvboxsync#endif /* _MULTIBUF_H_ */