#ifndef _MULTIBUF_H_
#define _MULTIBUF_H_
#include <X11/Xfuncproto.h>
#define MULTIBUFFER_PROTOCOL_NAME "Multi-Buffering"
#define MULTIBUFFER_MAJOR_VERSION 1
#define MULTIBUFFER_MINOR_VERSION 1
#define X_MbufGetBufferVersion 0
#define X_MbufCreateImageBuffers 1
#define X_MbufDestroyImageBuffers 2
#define X_MbufDisplayImageBuffers 3
#define X_MbufSetMBufferAttributes 4
#define X_MbufGetMBufferAttributes 5
#define X_MbufSetBufferAttributes 6
#define X_MbufGetBufferAttributes 7
#define X_MbufGetBufferInfo 8
#define X_MbufCreateStereoWindow 9
#define X_MbufClearImageBufferArea 10
#define MultibufferUpdateActionUndefined 0
#define MultibufferUpdateActionBackground 1
#define MultibufferUpdateActionUntouched 2
#define MultibufferUpdateActionCopied 3
#define MultibufferUpdateHintFrequent 0
#define MultibufferUpdateHintIntermittent 1
#define MultibufferUpdateHintStatic 2
#define MultibufferWindowUpdateHint (1L << 0)
#define MultibufferBufferEventMask (1L << 0)
#define MultibufferModeMono 0
#define MultibufferModeStereo 1
#define MultibufferSideMono 0
#define MultibufferSideLeft 1
#define MultibufferSideRight 2
#define MultibufferUnclobbered 0
#define MultibufferPartiallyClobbered 1
#define MultibufferFullyClobbered 2
#define MultibufferClobberNotifyMask 0x02000000
#define MultibufferUpdateNotifyMask 0x04000000
#define MultibufferClobberNotify 0
#define MultibufferUpdateNotify 1
#define MultibufferNumberEvents (MultibufferUpdateNotify + 1)
#define MultibufferBadBuffer 0
#define MultibufferNumberErrors (MultibufferBadBuffer + 1)
#ifndef _MULTIBUF_SERVER_
typedef XID Multibuffer;
typedef struct {
int type;
unsigned long serial;
int send_event;
Display *display;
Multibuffer buffer;
int state;
} XmbufClobberNotifyEvent;
typedef struct {
int type;
unsigned long serial;
int send_event;
Display *display;
Multibuffer buffer;
} XmbufUpdateNotifyEvent;
typedef struct {
int displayed_index;
int update_action;
int update_hint;
int window_mode;
int nbuffers;
Multibuffer *buffers;
} XmbufWindowAttributes;
typedef struct {
int update_hint;
} XmbufSetWindowAttributes;
typedef struct {
Window window;
unsigned long event_mask;
int buffer_index;
int side;
} XmbufBufferAttributes;
typedef struct {
unsigned long event_mask;
} XmbufSetBufferAttributes;
typedef struct {
VisualID visualid;
int max_buffers;
int depth;
} XmbufBufferInfo;
_XFUNCPROTOBEGIN
extern Bool XmbufQueryExtension(
Display* ,
int* ,
int*
);
extern Status XmbufGetVersion(
Display* ,
int* ,
int*
);
extern int XmbufCreateBuffers(
Display* ,
Window ,
int ,
int ,
int ,
Multibuffer*
);
extern void XmbufDestroyBuffers(
Display* ,
Window
);
extern void XmbufDisplayBuffers(
Display* ,
int ,
Multibuffer* ,
int ,
int
);
extern Status XmbufGetWindowAttributes(
Display* ,
Window ,
XmbufWindowAttributes*
);
extern void XmbufChangeWindowAttributes(
Display* ,
Window ,
unsigned long ,
XmbufSetWindowAttributes*
);
extern Status XmbufGetBufferAttributes(
Display* ,
Multibuffer ,
XmbufBufferAttributes*
);
extern void XmbufChangeBufferAttributes(
Display* ,
Multibuffer ,
unsigned long ,
XmbufSetBufferAttributes*
);
extern Status XmbufGetScreenInfo(
Display* ,
Drawable ,
int* ,
XmbufBufferInfo** ,
int* ,
XmbufBufferInfo**
);
extern Window XmbufCreateStereoWindow(
Display* ,
Window ,
int ,
int ,
unsigned int ,
unsigned int ,
unsigned int ,
int ,
unsigned int ,
Visual* ,
unsigned long ,
XSetWindowAttributes* ,
Multibuffer* ,
Multibuffer*
);
extern void XmbufClearBufferArea(
Display* ,
Multibuffer ,
int ,
int ,
unsigned int ,
unsigned int ,
Bool
);
_XFUNCPROTOEND
#else
#include "scrnintstr.h"
typedef Bool (* mbInitFunc)();
struct _mbufScreen;
extern void RegisterMultibufferInit(
ScreenPtr ,
Bool (* )(
ScreenPtr ,
struct _mbufScreen *
)
);
struct xMbufBufferInfo;
extern void RegisterDoubleBufferHardware(
ScreenPtr ,
int ,
struct xMbufBufferInfo * ,
DevUnion * ,
DevUnion ,
void (* )(),
void (* )()
);
extern int CreateImageBuffers (
WindowPtr ,
int ,
XID * ,
int ,
int
);
extern void DestroyImageBuffers (
WindowPtr
);
extern int DisplayImageBuffers (
XID * ,
int
);
#endif
#endif