943N/A/* Copyright (c) 1993, 1997, Oracle and/or its affiliates. All rights reserved.
830N/A *
830N/A * Permission is hereby granted, free of charge, to any person obtaining a
919N/A * copy of this software and associated documentation files (the "Software"),
919N/A * to deal in the Software without restriction, including without limitation
919N/A * the rights to use, copy, modify, merge, publish, distribute, sublicense,
919N/A * and/or sell copies of the Software, and to permit persons to whom the
919N/A * Software is furnished to do so, subject to the following conditions:
830N/A *
919N/A * The above copyright notice and this permission notice (including the next
919N/A * paragraph) shall be included in all copies or substantial portions of the
919N/A * Software.
830N/A *
919N/A * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
919N/A * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
919N/A * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
919N/A * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
919N/A * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
919N/A * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
919N/A * DEALINGS IN THE SOFTWARE.
830N/A */
830N/A
830N/A
830N/A/*
830N/A * dga.h - Sun Direct Graphics Access interface
830N/A */
830N/A
830N/A#ifndef _DGA_H
830N/A#define _DGA_H
830N/A
830N/A#include <sys/types.h>
830N/A#ifndef SERVER_DGA
830N/A#include "X11/Xlib.h"
830N/A#endif /* SERVER_DGA */
830N/A#include "dga_externaldefs.h"
830N/A
830N/A#if defined (_POSIX_C_SOURCE)
830N/A#define u_int uint_t
830N/A#endif
830N/A
830N/A#ifdef SERVER_DGA
830N/A#define Display void
830N/A#define Bool int
830N/A#endif /* SERVER_DGA */
830N/A
830N/A#define DGA_X_EOL (-32767)
830N/A#define DGA_Y_EOL (-32768)
830N/A
830N/A#define DGA_DB_DEV_INFO_SZ 132
830N/A
830N/A#define DGA_RTN_NOT_CACHED 0
830N/A#define DGA_RTN_SAME_DEV 1
830N/A#define DGA_RTN_NEW_DEV 2
830N/A
830N/A#define DGA_CLIENT_VERSION 1
830N/A
830N/Atypedef u_int Dga_token;
830N/A
830N/Atypedef struct dga_curs_memimage {
830N/A u_int width;
830N/A u_int height;
830N/A u_int depth;
830N/A u_int linebytes;
830N/A void *memptr;
830N/A} Dga_curs_memimage;
830N/A
830N/Atypedef struct dga_dbinfo {
830N/A short number_buffers;
830N/A short read_buffer;
830N/A short write_buffer;
830N/A short display_buffer;
830N/A u_int reserved_1; /* for future use */
830N/A u_int reserved_2; /* for future use */
830N/A u_int reserved_3; /* for the future */
830N/A u_int reserved_4; /* for the future */
830N/A u_int reserved_5; /* for the future */
830N/A u_int wid; /* db window id. */
830N/A u_int unique;
830N/A u_char device_info[DGA_DB_DEV_INFO_SZ];
830N/A} Dga_dbinfo;
830N/A
830N/A#ifndef DGA_NUM_BUFFER_TYPES
830N/A/* The following buffer types also defined(duplicated) in
830N/A * dga_winshared.h file. * I can't include dga.h in hw/solaris/dga
830N/A * due to some declarations inconsistency.
830N/A * Whenever someone changes/addes/deleted to this enumerated values,
830N/A * please also update dga_winshared.h which is located
830N/A * in xc/include/dga/
830N/A */
830N/A
830N/A/* Known types of ancillary buffers */
830N/Atypedef enum {
830N/A DGA_DEPTH_BUFFER =0,
830N/A DGA_STENCIL_BUFFER,
830N/A DGA_ACCUM_BUFFER,
830N/A DGA_ALPHA_BUFFER,
830N/A DGA_BACK_BUFFER,
830N/A DGA_AUX_BUFFER0,
830N/A DGA_AUX_BUFFER1,
830N/A DGA_AUX_BUFFER2,
830N/A DGA_AUX_BUFFER3
830N/A} Dga_buffer_type;
830N/A
830N/A#define DGA_NUM_BUFFER_TYPES (DGA_AUX_BUFFER3+1)
830N/A#endif
830N/A
830N/Atypedef void *Dga_buffer;
830N/A
830N/Atypedef struct dga_widinfo {
830N/A short number_wids; /* number of contiguous wids alloc */
830N/A short start_wid; /* starting wid */
830N/A short wid; /* current wid */
830N/A short reserved_1; /* for the future */
830N/A} Dga_widinfo;
830N/A
830N/Atypedef void* Dga_window;
830N/Atypedef void* Dga_cmap;
830N/A
830N/A/* May be either a window, the main window of a multibuffer set, or a pixmap */
830N/Atypedef void* Dga_drawable;
830N/A
830N/Atypedef struct dga_opaque {
830N/A int loc_1;
830N/A u_int loc_2;
830N/A u_int *loc_3;
830N/A int loc_4;
830N/A u_int *loc_5;
830N/A u_int *loc_6;
830N/A int (*loc_7)(Dga_window);
830N/A int (*loc_8)(Dga_window);
830N/A int (*loc_9)(Dga_window);
830N/A int loc_10;
830N/A} *Dga_opaque;
830N/A
830N/Atypedef struct dga_opaque_draw {
830N/A int loc_1;
830N/A u_int loc_2;
830N/A u_int *loc_3;
830N/A int loc_4;
830N/A u_int *loc_5;
830N/A u_int *loc_6;
830N/A int (*loc_7)(Dga_drawable);
830N/A int (*loc_8)(Dga_drawable);
830N/A int (*loc_9)(Dga_drawable);
830N/A int loc_10;
830N/A u_int loc_11[DGA_MAX_GRABBABLE_BUFS + 1];
830N/A u_int *loc_12;
830N/A} *Dga_opaque_draw;
830N/A
830N/A/* Types for drawable notification functions */
830N/Atypedef void (*DgaSiteNotifyFunc)(Dga_drawable, short, void *, int);
830N/Atypedef void (*DgaMbNotifyFunc)(Dga_drawable, void *, int);
830N/Atypedef void (*DgaRendBufNotifyFunc)(Dga_drawable, short, void *);
830N/Atypedef void (*DgaCursTakeDownFunc)(void *, Dga_drawable, int, int, Dga_curs_memimage *);
830N/Atypedef void (*DgaOvlStateNotifyFunc)(Dga_drawable, void *, int);
830N/A
830N/A#define DGA_LOCK(x) (*(((Dga_opaque)(x))->loc_5)) = 1
830N/A#define DGA_UNLOCK(x) (*(((Dga_opaque)(x))->loc_6)) = 0
830N/A
830N/A#define DGA_WIN_LOCK(win) \
830N/A do { \
830N/A if ((((Dga_opaque)(win))->loc_4)++ == 0) { \
830N/A DGA_LOCK(win); \
830N/A ((Dga_opaque)win)->loc_10 = (((((Dga_opaque)(win))->loc_2) == \
830N/A (*(((Dga_opaque)(win))->loc_3))) ? \
830N/A 0 : (*(((Dga_opaque)(win))->loc_9))(win)); \
830N/A } \
830N/A } while (0)
830N/A
830N/A#define DGA_WIN_UNLOCK(win) \
830N/A do { \
830N/A if (--(((Dga_opaque)(win))->loc_4) == 0) { \
830N/A DGA_UNLOCK(win); \
830N/A if (((Dga_opaque)(win))->loc_8) \
830N/A (*(((Dga_opaque)(win))->loc_8))(win); \
830N/A } \
830N/A } while (0)
830N/A
830N/A#define DGA_WIN_MODIF(win) (((Dga_opaque)win)->loc_10)
830N/A
830N/A
830N/A/* this is so we can we can enter the opaque interface */
830N/A#define DGA_CASTDRAW(dgadraw) ((Dga_opaque_draw)(dgadraw))
830N/A
830N/Atypedef int (*DgaDrawUpdateFunc)(Dga_drawable, short);
830N/A#define DGA_CASTFUNC(func) ((DgaDrawUpdateFunc)(func))
830N/A
830N/A
830N/A#define DGA_DRAW_LOCK(dgadraw, bufIndex) \
830N/A{ \
830N/A if ((DGA_CASTDRAW(dgadraw)->loc_4)++ == 0) { \
830N/A DGA_LOCK(dgadraw); \
830N/A DGA_CASTDRAW(dgadraw)->loc_10 = \
830N/A ( \
830N/A ((DGA_CASTDRAW(dgadraw)->loc_11[bufIndex + 1]) == \
830N/A (*(DGA_CASTDRAW(dgadraw)->loc_3))) \
830N/A ? 0 \
830N/A : (*DGA_CASTFUNC(DGA_CASTDRAW(dgadraw)->loc_9)) \
830N/A ((dgadraw), (bufIndex)) \
830N/A ); \
830N/A } \
830N/A}
830N/A
830N/A#define DGA_DRAW_UNLOCK(dgadraw) \
830N/A{ \
830N/A if (--(DGA_CASTDRAW(dgadraw)->loc_4) == 0) { \
830N/A DGA_UNLOCK(dgadraw); \
830N/A if (DGA_CASTDRAW(dgadraw)->loc_8) \
830N/A (*(DGA_CASTDRAW(dgadraw)->loc_8))(dgadraw); \
830N/A } \
830N/A}
830N/A
830N/A#define DGA_DRAW_LOCK_SRC_AND_DST(dgasrc, bufIndexSrc, dgadst, bufIndexDst) \
830N/A{ \
830N/A /* Always lock pixmap first. */ \
830N/A if ((DGA_CASTDRAW(dgasrc)->loc_1 == DGA_DRAW_WINDOW) && \
830N/A (DGA_CASTDRAW(dgadst)->loc_1 == DGA_DRAW_PIXMAP)) { \
830N/A DGA_DRAW_LOCK(dgadst, bufIndexDst); \
830N/A DGA_DRAW_LOCK(dgasrc, bufIndexSrc); \
830N/A } else if ((DGA_CASTDRAW(dgasrc)->loc_1 == DGA_DRAW_PIXMAP) && \
830N/A (DGA_CASTDRAW(dgadst)->loc_1 == DGA_DRAW_WINDOW)) { \
830N/A DGA_DRAW_LOCK(dgasrc, bufIndexSrc); \
830N/A DGA_DRAW_LOCK(dgadst, bufIndexDst); \
830N/A } else if ((DGA_CASTDRAW(dgasrc)->loc_1 == DGA_DRAW_PIXMAP) && \
830N/A (DGA_CASTDRAW(dgadst)->loc_1 == DGA_DRAW_PIXMAP)) { \
830N/A /* We lock the src pixmap and since all pixmaps share the same \
830N/A * lock page, the dst pixmap is locked as well. */ \
830N/A \
830N/A DGA_DRAW_LOCK(dgasrc, bufIndexSrc); \
830N/A \
830N/A /* Now update dest pixmap's modif */ \
830N/A \
830N/A DGA_CASTDRAW(dgadst)->loc_10 = \
830N/A (((DGA_CASTDRAW(dgadst)->loc_11[0]) == \
830N/A (*(DGA_CASTDRAW(dgadst)->loc_3))) \
830N/A ? 0 : (*DGA_CASTFUNC(DGA_CASTDRAW(dgadst)->loc_9)) \
830N/A ((dgadst), (bufIndexDst))); \
830N/A } \
830N/A}
830N/A
830N/A#define DGA_DRAW_UNLOCK_SRC_AND_DST(dgasrc, dgadst) \
830N/A{ \
830N/A /* Always unlock window first */ \
830N/A if ((DGA_CASTDRAW(dgasrc)->loc_1 == DGA_DRAW_WINDOW) && \
830N/A (DGA_CASTDRAW(dgadst)->loc_1 == DGA_DRAW_PIXMAP)) { \
830N/A DGA_DRAW_UNLOCK(dgasrc); \
830N/A DGA_DRAW_UNLOCK(dgadst); \
830N/A } else if ((DGA_CASTDRAW(dgasrc)->loc_1 == DGA_DRAW_PIXMAP) && \
830N/A (DGA_CASTDRAW(dgadst)->loc_1 == DGA_DRAW_WINDOW)) { \
830N/A DGA_DRAW_UNLOCK(dgadst); \
830N/A DGA_DRAW_UNLOCK(dgasrc); \
830N/A } else if ((DGA_CASTDRAW(dgasrc)->loc_1 == DGA_DRAW_PIXMAP) && \
830N/A (DGA_CASTDRAW(dgadst)->loc_1 == DGA_DRAW_PIXMAP)) { \
830N/A /* Unlock the src pixmap */ \
830N/A DGA_DRAW_UNLOCK(dgasrc); \
830N/A } \
830N/A}
830N/A
830N/A#define DGA_DRAW_MODIF(dgadraw) (((Dga_opaque_draw)(dgadraw))->loc_10)
830N/A
830N/A#define DGA_INIT() dga_init_version(DGA_CLIENT_VERSION)
830N/A
830N/A
830N/A#ifdef __cplusplus
830N/Aextern "C" {
830N/A#endif
830N/A
830N/A /* General DGA functions */
830N/Aextern void dga_init_version(int);
830N/A/*
830N/A * X protocol extension functions
830N/A */
830N/Aextern Dga_token XDgaGrabWindow(Display*, Window);
830N/Aextern int XDgaUnGrabWindow(Display*, Window);
830N/Aextern Dga_token XDgaGrabColormap(Display*, Colormap);
830N/Aextern int XDgaUnGrabColormap(Display*, Colormap);
830N/Aextern int XDgaGrabWids(Display*, Window, int);
830N/Aextern int XDgaGrabFCS(Display*, Window, int);
830N/Aextern int XDgaGrabZbuf(Display*, Window, int);
830N/Aextern int XDgaGrabStereo(Display*, Window, int);
830N/A/*
830N/A * Window Compatibility Interface - Window grabber functions
830N/A */
830N/A
830N/Aextern Dga_window dga_win_grab(int, Dga_token);
830N/Aextern void dga_win_ungrab(Dga_window, int);
830N/Aextern char *dga_win_fbname(Dga_window);
830N/Aextern int dga_win_devfd(Dga_window);
830N/Aextern int dga_win_clipchg(Dga_window);
830N/Aextern int dga_win_curschg(Dga_window);
830N/Aextern int dga_win_rtnchg(Dga_window);
830N/Aextern short *dga_win_clipinfo(Dga_window);
830N/Aextern void dga_win_bbox(Dga_window, int *, int *, int *, int *);
830N/Aextern int dga_win_singlerect(Dga_window);
830N/Aextern int dga_win_empty(Dga_window);
830N/Aextern int dga_win_obscured(Dga_window);
830N/Aextern int dga_win_cursactive(Dga_window);
830N/Aextern void dga_win_cursupdate(Dga_window, void(*)(void *,
830N/A Dga_window, int, int, Dga_curs_memimage*), void *);
830N/Aextern Dga_dbinfo *dga_win_dbinfop(Dga_window);
830N/Aextern Dga_widinfo *dga_win_widinfop(Dga_window);
830N/Aextern void *dga_win_bboxinfop(Dga_window);
830N/Aextern u_char dga_win_depth(Dga_window);
830N/Aextern u_short dga_win_borderwidth(Dga_window);
830N/Aextern void dga_win_set_client_infop(Dga_window, void *);
830N/Aextern void *dga_win_get_client_infop(Dga_window);
830N/A
830N/A/*
830N/A * Colormap grabber functions
830N/A */
830N/A
830N/Aextern Dga_cmap dga_cm_grab(int, Dga_token);
830N/Aextern void dga_cm_ungrab(Dga_cmap, int);
830N/Aextern void dga_cm_read(Dga_cmap, int, int, u_char *, u_char *,
830N/A u_char *);
830N/Aextern void dga_cm_write(Dga_cmap, int, int, u_char *, u_char*,
830N/A u_char *, void (*)(Dga_window, int,
830N/A int, u_char *, u_char *, u_char *));
830N/Aextern int dga_cm_devfd(Dga_cmap);
830N/Aextern void dga_cm_set_client_infop(Dga_cmap, void *);
830N/Aextern void *dga_cm_get_client_infop(Dga_cmap);
830N/Aextern void *dga_cm_devinfop(Dga_cmap);
830N/A
830N/A/*
830N/A * Window Compatibility Interface - double buffering functions
830N/A */
830N/A
830N/Aextern int dga_db_grab(Dga_window, int, int (*)(Dga_window),
830N/A u_int * );
830N/Aextern int dga_db_ungrab(Dga_window);
830N/Aextern void dga_db_write(Dga_window, int,
830N/A int(*)(void*, Dga_window, int), void *);
830N/Aextern void dga_db_read(Dga_window,int,
830N/A int(*)(void*, Dga_window, int), void *);
830N/Aextern void dga_db_display(Dga_window, int,
830N/A int(*)(void*, Dga_window, int), void *);
830N/Aextern void dga_db_interval(Dga_window, int);
830N/Aextern void dga_db_interval_wait(Dga_window);
830N/Aextern int dga_db_interval_check(Dga_window);
830N/Aextern int dga_db_write_inquire(Dga_window);
830N/Aextern int dga_db_read_inquire(Dga_window);
830N/Aextern int dga_db_display_inquire(Dga_window);
830N/Aextern int dga_db_display_done(Dga_window, int,
830N/A int (*)(Dga_window));
830N/A/*
830N/A * Window Compatibility Interface - Retained window grabber functions
830N/A */
830N/A
830N/Aextern int dga_rtn_grab(Dga_window);
830N/Aextern int dga_rtn_ungrab(Dga_window);
830N/Aextern int dga_rtn_active(Dga_window);
830N/Aextern int dga_rtn_cached(Dga_window);
830N/Aextern void *dga_rtn_devinfo(Dga_window);
830N/Aextern void dga_rtn_devtype(Dga_window, u_char *, char **);
830N/Aextern void dga_rtn_dimensions(Dga_window, short *, short *,
830N/A u_int*);
830N/Aextern void *dga_rtn_pixels(Dga_window);
830N/A
830N/A/*
830N/A * Drawable grabber functions
830N/A */
830N/A
830N/Aextern Dga_drawable XDgaGrabDrawable(Display *dpy, Drawable drawid);
830N/Aextern int XDgaUnGrabDrawable(Dga_drawable dgadraw);
830N/Aextern Display * dga_draw_display (Dga_drawable dgadraw);
830N/Aextern Drawable dga_draw_id(Dga_drawable);
830N/Aextern int dga_draw_type (Dga_drawable dgadraw);
830N/Aextern char * dga_draw_devname (Dga_drawable dgadraw);
830N/Aextern int dga_draw_devfd (Dga_drawable dgadraw);
830N/Aextern int dga_draw_depth (Dga_drawable dgadraw);
830N/Aextern void dga_draw_set_client_infop (Dga_drawable dgadraw, void *client_info_ptr);
830N/Aextern void * dga_draw_get_client_infop (Dga_drawable dgadraw);
830N/Aextern void * dga_draw_devinfo (Dga_drawable dgadraw);
830N/Aextern int dga_draw_sitechg (Dga_drawable dgadraw, int *reason);
830N/Aextern void dga_draw_sitesetnotify (Dga_drawable dgadraw,
830N/A DgaSiteNotifyFunc site_notify_func,
830N/A void *client_data);
830N/Aextern void dga_draw_sitegetnotify (Dga_drawable dgadraw,
830N/A DgaSiteNotifyFunc *site_notify_func,
830N/A void **client_data);
830N/Aextern int dga_draw_site (Dga_drawable dgadraw);
830N/Aextern void * dga_draw_address (Dga_drawable dgadraw);
830N/Aextern int dga_draw_linebytes (Dga_drawable dgadraw);
830N/Aextern int dga_draw_clipchg (Dga_drawable dgadraw);
830N/Aextern void dga_draw_bbox(Dga_drawable dgadraw, int *xp, int *yp,
830N/A int *widthp, int *heightp);
830N/Aextern int dga_draw_visibility (Dga_drawable dgadraw);
830N/Aextern int dga_draw_empty (Dga_drawable dgadraw);
830N/Aextern short * dga_draw_clipinfo (Dga_drawable dgadraw);
830N/Aextern int dga_draw_singlerect (Dga_drawable dgadraw);
830N/Aextern int dga_draw_obscured (Dga_drawable dgadraw);
830N/Aextern u_short dga_draw_borderwidth (Dga_drawable dgadraw);
830N/Aextern void dga_draw_curshandle (Dga_drawable dgadraw,
830N/A DgaCursTakeDownFunc take_down_func,
830N/A void *client_data);
830N/Aextern int dga_draw_rtngrab (Dga_drawable dgadraw);
830N/Aextern int dga_draw_rtnungrab (Dga_drawable dgadraw);
830N/Aextern int dga_draw_rtnchg (Dga_drawable dgadraw);
830N/Aextern int dga_draw_rtnactive (Dga_drawable dgadraw);
830N/Aextern int dga_draw_rtncached (Dga_drawable dgadraw);
830N/Aextern void * dga_draw_rtndevinfop (Dga_drawable dgadraw);
830N/Aextern void dga_draw_rtndevtype (Dga_drawable dgadraw, u_char *type,
830N/A char **name);
830N/Aextern void dga_draw_rtndimensions (Dga_drawable dgadraw, short *width,
830N/A short *height, u_int *linebytes);
830N/Aextern void * dga_draw_rtnpixels (Dga_drawable dgadraw);
830N/Aextern int dga_draw_mbchg (Dga_drawable dgadraw, int *reason);
830N/Aextern void dga_draw_mbsetnotify (Dga_drawable dgadraw, DgaMbNotifyFunc mb_notify_func,
830N/A void *client_data);
830N/Aextern void dga_draw_mbgetnotify (Dga_drawable dgadraw, DgaMbNotifyFunc *mb_notify_func,
830N/A void **client_data);
830N/Aextern int dga_draw_mbaccessmode (Dga_drawable dgadraw);
830N/Aextern int dga_draw_mbsitetypeconst (Dga_drawable dgadraw);
830N/Aextern void dga_draw_mbsetrendbufnotify (Dga_drawable dgadraw,
830N/A DgaRendBufNotifyFunc rb_notify_func,
830N/A void *client_data);
830N/Aextern void dga_draw_mbgetrendbufnotify (Dga_drawable dgadraw,
830N/A DgaRendBufNotifyFunc *rb_notify_func,
830N/A void **client_data);
830N/Aextern int dga_draw_ovlstatechg (Dga_drawable dgadraw);
830N/Aextern int dga_draw_ovlstate (Dga_drawable dgadraw);
830N/Aextern void dga_draw_ovlstatesetnotify (Dga_drawable dgadraw,
830N/A DgaOvlStateNotifyFunc ovlstate_notify_func,
830N/A void *client_data);
830N/Aextern void dga_draw_ovlstategetnotify (Dga_drawable dgadraw,
830N/A DgaOvlStateNotifyFunc *ovlstate_notify_func,
830N/A void **client_data);
830N/A
830N/A
830N/A/*
830N/A * Drawable grabber functions - Buffer Control Compatibility
830N/A */
830N/A
830N/Aextern int dga_draw_db_grab (Dga_drawable dgadraw, int nbuffers,
830N/A int (*vrtfunc)(Dga_drawable), u_int *vrtcounterp);
830N/Aextern int dga_draw_db_ungrab (Dga_drawable dgadraw);
830N/Aextern void dga_draw_db_write (Dga_drawable dgadraw, int buffer,
830N/A int (*writefunc)(void*, Dga_drawable, int),
830N/A void *data);
830N/Aextern void dga_draw_db_read (Dga_drawable dgadraw, int buffer,
830N/A int (*readfunc)(void*, Dga_drawable, int),
830N/A void *data);
830N/Aextern void dga_draw_db_display (Dga_drawable dgadraw, int buffer,
830N/A int (*visfunc)(void*, Dga_drawable, int),
830N/A void *data);
830N/Aextern void dga_draw_db_interval (Dga_drawable dgadraw, int interval);
830N/Aextern void dga_draw_db_interval_wait (Dga_drawable dgadraw);
830N/Aextern int dga_draw_db_interval_check (Dga_drawable dgadraw);
830N/Aextern int dga_draw_db_write_inquire (Dga_drawable dgadraw);
830N/Aextern int dga_draw_db_read_inquire (Dga_drawable dgadraw);
830N/Aextern int dga_draw_db_display_inquire (Dga_drawable dgadraw);
830N/Aextern int dga_draw_db_display_done (Dga_drawable dgadraw, int flag,
830N/A int (*display_done_func)(Dga_drawable));
830N/Aextern Dga_dbinfo *dga_draw_db_dbinfop (Dga_drawable dgadraw);
830N/Aextern int dga_draw_devinfochg(Dga_drawable dgadraw);
830N/A
830N/A/*
830N/A * Misc. grabber functions
830N/A */
830N/A
830N/Aextern int XDgaDrawGrabWids(Display*, Drawable, int);
830N/Aextern Dga_widinfo *dga_draw_widinfop(Dga_drawable);
830N/Aextern int XDgaDrawGrabFCS(Display*, Drawable, int);
830N/Aextern int XDgaDrawGrabZbuf(Display*, Drawable, int);
830N/Aextern int XDgaDrawGrabStereo(Display*, Drawable, int);
830N/A
830N/A/*
830N/A * Window Compatibility Interface - Ancillary buffers functions
830N/A * New feature for 2.6
830N/A */
830N/A
830N/Aextern Dga_buffer dga_draw_grab_buffer(Dga_drawable,
830N/A Dga_buffer_type, int);
830N/Aextern int dga_draw_ungrab_buffer(Dga_drawable, Dga_buffer_type);
830N/Aextern int dga_draw_get_buffers(Dga_drawable, Dga_buffer **);
830N/Aextern Dga_buffer_type dga_buffer_type(Dga_buffer);
830N/Aextern int dga_buffer_site(Dga_buffer);
830N/Aextern int dga_draw_bufferchg(Dga_drawable);
830N/Aextern int dga_buffer_sitechg(Dga_buffer, int *);
830N/Aextern void* dga_buffer_address(Dga_buffer);
830N/Aextern int dga_buffer_linebytes(Dga_buffer);
830N/Aextern int dga_buffer_bitsperpixel(Dga_buffer);
830N/A
830N/A#ifdef __cplusplus
830N/A}
830N/A#endif
830N/A
830N/A#endif /* _DGA_H */