ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync/*
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync *
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncCopyright 1989, 1998 The Open Group
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncdocumentation for any purpose is hereby granted without fee, provided that
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncthe above copyright notice appear in all copies and that both that
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsynccopyright notice and this permission notice appear in supporting
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncdocumentation.
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncThe above copyright notice and this permission notice shall be included in
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncall copies or substantial portions of the Software.
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncExcept as contained in this notice, the name of The Open Group shall not be
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncused in advertising or otherwise to promote the sale, use or other dealings
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncin this Software without prior written authorization from The Open Group.
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync#ifndef _MULTIBUF_H_
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync#define _MULTIBUF_H_
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync#include <X11/Xfuncproto.h>
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync#include <X11/extensions/multibufconst.h>
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync#if !defined(UNIXCPP) || defined(ANSICPP)
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync#define MbufGetReq(name,req,info) GetReq (name, req); \
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync req->reqType = info->codes->major_opcode; \
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync req->mbufReqType = X_##name;
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync#else
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync#define MbufGetReq(name,req,info) GetReq (name, req); \
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync req->reqType = info->codes->major_opcode; \
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync req->mbufReqType = X_/**/name;
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync#endif
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync/*
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync * Extra definitions that will only be needed in the client
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsynctypedef XID Multibuffer;
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsynctypedef struct {
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int type; /* of event */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned long serial; /* # of last request processed by server */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int send_event; /* true if this came frome a SendEvent request */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display *display; /* Display the event was read from */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Multibuffer buffer; /* buffer of event */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int state; /* see Clobbered constants above */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync} XmbufClobberNotifyEvent;
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsynctypedef struct {
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int type; /* of event */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned long serial; /* # of last request processed by server */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int send_event; /* true if this came frome a SendEvent request */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display *display; /* Display the event was read from */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Multibuffer buffer; /* buffer of event */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync} XmbufUpdateNotifyEvent;
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync/*
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync * per-window attributes that can be got
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsynctypedef struct {
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int displayed_index; /* which buffer is being displayed */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int update_action; /* Undefined, Background, Untouched, Copied */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int update_hint; /* Frequent, Intermittent, Static */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int window_mode; /* Mono, Stereo */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int nbuffers; /* Number of buffers */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Multibuffer *buffers; /* Buffers */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync} XmbufWindowAttributes;
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync/*
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync * per-window attributes that can be set
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsynctypedef struct {
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int update_hint; /* Frequent, Intermittent, Static */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync} XmbufSetWindowAttributes;
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync/*
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync * per-buffer attributes that can be got
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsynctypedef struct {
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Window window; /* which window this belongs to */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned long event_mask; /* events that have been selected */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int buffer_index; /* which buffer is this */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int side; /* Mono, Left, Right */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync} XmbufBufferAttributes;
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync/*
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync * per-buffer attributes that can be set
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsynctypedef struct {
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned long event_mask; /* events that have been selected */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync} XmbufSetBufferAttributes;
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync/*
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync * per-screen buffer info (there will be lists of them)
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsynctypedef struct {
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync VisualID visualid; /* visual usuable at this depth */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int max_buffers; /* most buffers for this visual */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int depth; /* depth of buffers to be created */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync} XmbufBufferInfo;
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync_XFUNCPROTOBEGIN
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern Bool XmbufQueryExtension(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int* /* event_base_return */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int* /* error_base_return */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern Status XmbufGetVersion(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int* /* major_version_return */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int* /* minor_version_return */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern int XmbufCreateBuffers(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Window /* w */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int /* count */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int /* update_action */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int /* update_hint */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Multibuffer* /* buffers */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern void XmbufDestroyBuffers(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Window /* window */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern void XmbufDisplayBuffers(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int /* count */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Multibuffer* /* buffers */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int /* min_delay */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int /* max_delay */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern Status XmbufGetWindowAttributes(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Window /* w */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync XmbufWindowAttributes* /* attr */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern void XmbufChangeWindowAttributes(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Window /* w */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned long /* valuemask */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync XmbufSetWindowAttributes* /* attr */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern Status XmbufGetBufferAttributes(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Multibuffer /* b */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync XmbufBufferAttributes* /* attr */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern void XmbufChangeBufferAttributes(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Multibuffer /* b */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned long /* valuemask */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync XmbufSetBufferAttributes* /* attr */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern Status XmbufGetScreenInfo(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Drawable /* d */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int* /* nmono_return */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync XmbufBufferInfo** /* mono_info_return */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int* /* nstereo_return */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync XmbufBufferInfo** /* stereo_info_return */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern Window XmbufCreateStereoWindow(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Window /* parent */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int /* x */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int /* y */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned int /* width */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned int /* height */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned int /* border_width */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int /* depth */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned int /* class */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Visual* /* visual */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned long /* valuemask */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync XSetWindowAttributes* /* attr */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Multibuffer* /* leftp */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Multibuffer* /* rightp */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsyncextern void XmbufClearBufferArea(
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Display* /* dpy */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Multibuffer /* buffer */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int /* x */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync int /* y */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned int /* width */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync unsigned int /* height */,
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync Bool /* exposures */
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync);
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync_XFUNCPROTOEND
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync
ae3b356f74cf4942fdd85f8b0544af62f8161656vboxsync#endif /* _MULTIBUF_H_ */