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#ifndef _DGA_INTERNAL_H
830N/A#define _DGA_INTERNAL_H
830N/A
830N/A/*
830N/A * dga_internal.h - Sun Direct Graphics Access interface internal include file
830N/A */
830N/A
830N/A/* Note that _Dga_window, _Dga_cmap, _Dga_pixmap are all internal declarations
830N/A * for the externally visible Dga_window, Dga_cmap and Dga_pixmap ( no leading
830N/A * underscore). In the externally visible include file, these are all declared
830N/A * as void * and thus quite opaque.
830N/A *
830N/A * Note: there is a DGA_FAST_DRAW_LOCK() macro that also access the
830N/A * fields in struct dga_window and dga_pixmap but is not currently in dga.h.
830N/A * Consider this macro before modifying fields.
830N/A*/
830N/A
830N/Atypedef u_int *Dga_lockp;
830N/A
830N/Atypedef struct dga_mbufset *DgaMbufSetPtr;
830N/A
830N/A
830N/A/* used only to get at the drawable type. After that, we vector off
830N/A to either a window or pixmap routine */
830N/Atypedef struct dga_drawable {
830N/A int drawable_type; /* pointer to drawable type */
830N/A} *_Dga_drawable;
830N/A
830N/Atypedef struct dga_window {
830N/A int drawable_type; /* pointer to drawable type */
830N/A u_int c_chngcnt; /* last recorded window change count */
830N/A u_int *s_chngcnt_p; /* ptr to server's global change cnt */
830N/A int w_lockcnt; /* lock count for nested locks */
830N/A Dga_lockp w_lockp; /* pointer to lock page */
830N/A Dga_lockp w_unlockp; /* points to unlock page */
830N/A#ifdef MT
830N/A mutex_t *mutexp; /* points to drawable's mutex */
830N/A#else
830N/A int (*w_lock_func)(); /* alternate function for locking */
830N/A#endif
830N/A int (*w_unlock_func)(); /* alternate func for unlocking */
830N/A int (*w_update_func)();
830N/A int w_modif; /* cached result of update check */
830N/A u_int c_wm_chngcnt[17]; /* last recorded global change counts */
830N/A u_int *w_wm_2nd; /* Ptr to second entry in wm_chngcnt[]*/
830N/A void *w_info; /* pointer to shared memory */
830N/A u_int c_clipseq; /* last recorded clip change count */
830N/A u_int *s_clipseq_p; /* ptr to server's clip change count */
830N/A short *w_clipptr; /* client virtual ptr to clip array. */
830N/A u_int w_cliplen; /* client's size of cliplist in bytes*/
830N/A Dga_token w_token; /* token used to grab window */
830N/A int w_infofd; /* fd of shared memory file */
830N/A int w_devfd; /* fd of framebuffer */
830N/A int w_grab_count; /* how many times we've grabbed it */
830N/A struct dga_window *w_next; /* used to link all grabbed windows */
830N/A void *w_lib_private; /* library private data */
830N/A void *w_client; /* for client use */
830N/A
830N/A
830N/A /* cursor grabber info */
830N/A void *curs_info; /* pointer to client's cursor info */
830N/A int curs_fd; /* Client side file descriptor */
830N/A u_int c_curseq; /* last recorded cursor change count */
830N/A u_int *s_curseq_p; /* ptr to server's cursor change cnt */
830N/A
830N/A /* Ancillay Buffer info */
830N/A void *back;
830N/A void *depth;
830N/A void *stencil;
830N/A void *accum;
830N/A void *alpha;
830N/A int buf_resize_flag;
830N/A u_int c_buffer_swap;
830N/A
830N/A /* double buffering info */
830N/A u_int db_enabled; /* flag to tell if initialized */
830N/A u_int *db_vrtcntrp; /* Client's ptr to VRT counter */
830N/A u_int db_lastvrtcntr; /* VRT counter value at last flip */
830N/A u_int db_swapint; /* number of intervals between flips */
830N/A int (*vrt_func)(Dga_window);/* user supplied vrt retrace func */
830N/A
830N/A /* retained window grabber info */
830N/A int rtn_fd; /* Client side fd for shared memory */
830N/A u_int rtn_size; /* Client size of pixel block in bytes */
830N/A u_int c_rtnseq; /* Client rtn modification counter */
830N/A u_int *s_rtnseq_p;/* Ptr to server's rtn mod counter */
830N/A u_int c_rtncachseq;/* Client device cache modification counter */
830N/A u_int *s_rtncachseq_p; /* Ptr to server's dev cache modification counter */
830N/A void *rtn_info; /* Ptr to Shared memory structure */
830N/A void *rtn_pixels; /* Client ptr to Client pixel mapping */
830N/A u_int rtn_flags; /* to record state of retained grab */
830N/A
830N/A /*
830N/A ** New fields for drawable grabber.
830N/A */
830N/A
830N/A Display *w_dpy; /* display the window belongs to */
830N/A Window w_id; /* XID of window */
830N/A DgaMbufSetPtr pMbs; /* Non-null for multibuf wins */
830N/A u_int *s_mbufseq_p; /* pointer to mbuf seq in shinfo */
830N/A u_int c_mbufseq; /* last mbufset composition sequence count */
830N/A u_int *s_mbcomposseq_p; /* pointer to mbufset compos seq in shinfo */
830N/A u_int c_mbcomposseq; /* last mb state sequence count */
830N/A u_int *s_devinfoseq_p; /* pointer to devinfo seq in shinfo */
830N/A u_int c_devinfoseq; /* last devinfo state sequence count */
830N/A
830N/A /* notification functions */
830N/A DgaSiteNotifyFunc siteNotifyFunc;
830N/A void *siteNotifyClientData;
830N/A DgaMbNotifyFunc mbNotifyFunc;
830N/A void *mbNotifyClientData;
830N/A DgaRendBufNotifyFunc rendBufNotifyFunc;
830N/A void *rendBufNotifyClientData;
830N/A
830N/A /* real lock subject - the win/mbuf currently locked by the client */
830N/A short rLockSubj;
830N/A
830N/A /* effective lock subject - the actual lock subject. This will be used by
830N/A the DGA state inquiry functions called by the client. If the
830N/A win/mbuf is not aliased, eLockSubj will be the same as rLockSubj */
830N/A short eLockSubj;
830N/A
830N/A /* previous effective lock subject - the lock subject for which a
830N/A change was last signalled to the client. It is assumed that the
830N/A client synchronized its state to this lock subject. This is always
830N/A true for well-behaved DGA clients */
830N/A short eLockSubjPrev;
830N/A
830N/A /* mbChgReason is the reason for an mbufset change. prevWasMbuffered
830N/A is used to help us figure this out. It is set during the update
830N/A phase and may be used during the inquiry phase */
830N/A char prevWasMbuffered;
830N/A char mbChgReason;
830N/A
830N/A /* used during update phase to indicate what state changed */
830N/A u_int changeMask;
830N/A
830N/A /* reason for any site change */
830N/A char siteChgReason;
830N/A
830N/A /* Has the window been previously locked? */
830N/A char prevLocked;
830N/A
830N/A u_char alignPad[2];
830N/A
830N/A /* overlay info
830N/A *
830N/A * If the window is an overlay, the isOverlay flag will be set to
830N/A * true and the s_ovlstate_p pointer will point to the ovlstate
830N/A * flag on the shared page and the s_ovlshapevalid_p pointer will
830N/A * point to the w_ovl_shape_valid flag.
830N/A */
830N/A int isOverlay;
830N/A int c_ovlstate;
830N/A int *s_ovlstate_p;
830N/A int *s_ovlshapevalid_p;
830N/A DgaOvlStateNotifyFunc ovlStateNotifyFunc;
830N/A void *ovlStateNotifyClientData;
830N/A
830N/A#ifdef MT
830N/A /* For the threaded case, this stores the real change counts while
830N/A * c_wm_chngcnt[] is used to force the update function to be called.
830N/A */
830N/A u_int shadow_chngcnt[17];
830N/A#endif
830N/A
830N/A} *_Dga_window;
830N/A
830N/A
830N/Atypedef struct _dgaLastSeqs {
830N/A u_int mbufseq;
830N/A u_int clipseq;
830N/A u_int curseq;
830N/A u_int rtnseq;
830N/A} DgaLastSeqs, *DgaLastSeqsPtr;
830N/A
830N/Atypedef struct dga_cmap {
830N/A void *cm_info;/* pointer to shared memory */
830N/A u_int c_chngcnt; /* last recorded change count */
830N/A u_int *s_chngcnt_p; /* last recorded change count */
830N/A int cm_lockcnt; /* lock count for nested locks */
830N/A u_int *cm_lockp; /* pointer to lock page */
830N/A u_int *cm_unlockp; /* pointer to unlock page */
830N/A int cm_use_new_ioctl; /* use new hardware ioctl? */
830N/A Dga_token cm_token; /* token used to grab cmap */
830N/A int cm_infofd; /* fd of shared memory file */
830N/A int cm_devfd; /* fd of framebuffer */
830N/A int cm_lockfd; /* fd of lock device
830N/A * (if not framebuffer) */
830N/A int cm_sunwindows_def_fd; /* client fd for server's
830N/A SunWindows default cmap window */
830N/A int cm_sunwindows_inst_fd; /* client fd for server's
830N/A SunWindows installed cmap window */
830N/A int cm_grab_count; /* how many times we've grabbed it */
830N/A struct dga_cmap *cm_next; /* used to link all grabbed cmaps */
830N/A void *cm_lib_private; /* library private data */
830N/A void *cm_client; /* for client use */
830N/A} *_Dga_cmap;
830N/A
830N/A/*
830N/A* When the pixmap interface is made public, this declaration should be
830N/A* moved into the dga.h file and taken out of the dga_internal.h file
830N/A* Also the lock routiens currently in pix_grab,c should be made into
830N/A* macros and added to dga.h
830N/A*/
830N/A
830N/Atypedef struct dga_pixmap {
830N/A int drawable_type; /* pointer to drawable type - window/pixmap*/
830N/A u_int obsolete; /* last recorded global change count */
830N/A u_int *s_chngcnt_p; /* ptr to server's global change cnt */
830N/A int p_lockcnt; /* lock count for nested locks */
830N/A Dga_lockp p_lockp; /* pointer to lock page */
830N/A Dga_lockp p_unlockp; /* points to unlock page */
830N/A#ifdef MT
830N/A mutex_t *mutexp; /* points to drawable's mutex */
830N/A#else
830N/A int (*p_lock_func)(); /* alternate function for locking */
830N/A#endif
830N/A int (*p_unlock_func)(); /* alternate func for unlocking */
830N/A int (*p_update_func)(); /* function to call for updates */
830N/A int p_modif; /* cached result of update check ?? */
830N/A u_int c_chngcnt[1]; /* Last recorded global change count */
830N/A u_int *p_chngcnt_2nd; /* Pts to c_chngcnt[0]*/
830N/A void *p_infop; /* pointer to shared pixmap memory*/
830N/A/* TODO: Why are the next two entries in here? It's not clear to me why
830N/A * the client side cares if the shpx_dir changes. The only time a pixmap
830N/A * is removed from the directory structure is when it is destroyed and
830N/A * then the obsolete flag is set. */
830N/A u_int c_dirchngcnt; /* Client's last recorderd dir chng cnt */
830N/A u_int *s_dirchngcnt_p;/* Ptr to server's dir chng cnt */
830N/A u_int c_devinfocnt; /* Client's last recorded devinfo seq cnt */
830N/A u_int *s_devinfocnt_p; /* Ptr to server's devinfo seq cnt */
830N/A u_int c_cachecnt; /* Client's last recorded cache sequence cnt */
830N/A u_int *s_cachecnt_p; /* ptr to Server cache sequence count */
830N/A u_char c_cached; /* Client's last recorded cache state */
830N/A u_char *s_cached_p; /* Ptr to server's cache state */
830N/A u_int p_dir_index; /* Client's pixmap's directory index */
830N/A void *p_shpx_dir; /* Client's ptr to the shpx dir */
830N/A void *p_shpx_client; /* Client's ptr to the shpx client struct */
830N/A Dga_token p_token; /* token used to grab window */
830N/A u_int c_size; /* Client's size of pixel array */
830N/A u_char *c_pixels; /* pointer to clients pixels */
830N/A u_char depth; /* pixmap depth in bits */
830N/A char pad0; /* padding to align to int */
830N/A u_short pad1; /* padding to align to int */
830N/A u_int linebytes; /* pixmap linebyte */
830N/A struct dga_pixmap *p_next; /* used to link all grabbed pixmaps */
830N/A int p_infofd; /* fd of shared memory file */
830N/A u_int pix_flags; /* to record state of grab ?? */
830N/A Display *p_dpy;
830N/A Pixmap p_id; /* XID of pixmap */
830N/A void *p_client; /* for client use */
830N/A
830N/A /* used during update phase to indicate what state changed */
830N/A u_int changeMask;
830N/A
830N/A /* reason for any site change */
830N/A char siteChgReason;
830N/A u_char alignPad[3];
830N/A
830N/A DgaSiteNotifyFunc siteNotifyFunc;
830N/A void *siteNotifyClientData;
830N/A#ifdef MT
830N/A /* For the threaded case, this stores the real change counts while
830N/A * c_chngcnt[] is used to force the update function to be called.
830N/A */
830N/A u_int shadow_chngcnt[1];
830N/A#endif
830N/A} *_Dga_pixmap;
830N/A
830N/Atypedef void * Dga_pixmap;
830N/A
830N/A#ifdef __cplusplus
830N/Aextern "C" {
830N/A#endif
830N/A
830N/A#ifdef MT
830N/Aextern mutex_t dgaGlobalMutex;
830N/Aextern mutex_t dgaGlobalPixmapMutex;
830N/Aextern int dgaThreaded;
830N/Aextern int dgaMTOn;
830N/A#endif
830N/A
830N/A#ifdef MT
830N/Aextern int dgai_unlock(Dga_drawable dgadraw);
830N/A#endif
830N/A
830N/A/* Pixmap grabber routines - these are not Public yet */
830N/Aextern Dga_token XDgaGrabPixmap(Display*, Pixmap);
830N/Aextern int XDgaUnGrabPixmap(Display*, Pixmap);
830N/Aextern Dga_pixmap dga_pix_grab(Dga_token, Pixmap);
830N/Aextern void dga_pix_ungrab(Dga_pixmap);
830N/Aextern int dga_pix_cachechg(Dga_pixmap);
830N/Aextern int dga_pix_cached(Dga_pixmap);
830N/Aextern char* dga_pix_devname(Dga_pixmap);
830N/Aextern void *dga_pix_pixels(Dga_pixmap);
830N/Aextern int dga_pix_linebytes(Dga_pixmap);
830N/Aextern u_char dga_pix_depth(Dga_pixmap);
830N/Aextern void *dga_pix_devinfo(Dga_pixmap);
830N/A
830N/A
830N/A/* These are always going to be private routines to be backward
830N/A * compatible
830N/A*/
830N/Aextern int XDgaGrabRetainedWindow(Display*, Window);
830N/Aextern int XDgaUnGrabRetainedWindow(Display *, Window);
830N/Aextern int XDgaGetRetainedPath(Display*, Window, char*);
830N/Aextern int XDgaQueryVersion(Display*, int*, int*);
830N/Aextern int XDgaGrabBuffers(Display *, Window, int );
830N/Aextern int XDgaUnGrabBuffers(Display *, Window);
830N/Aextern void dga_cm_get(Dga_cmap, int, int, u_char *, u_char *,
830N/A u_char *);
830N/Aextern void dga_cm_put(Dga_cmap, int, int, u_char *, u_char*,
830N/A u_char *);
830N/Aextern int dga_db_access(Dga_window);
830N/Aextern void dga_db_release(Dga_window);
830N/Aextern int dga_db_display_complete(Dga_window, int);
830N/Aextern void *dga_rtn_devinfo(Dga_window);
830N/A
830N/A/*
830N/A** Internal mbuf grab routine
830N/A*/
830N/A
830N/Aextern Dga_window dga_mbuf_grab (int devfd, Dga_token winToken);
830N/A
830N/A/*
830N/A** Internal mbufset member update routines
830N/A*/
830N/A
830N/Aextern int dgai_mbsmemb_update (Dga_drawable dgadraw, short bufIndex);
830N/Aextern int dgai_mbsmemb_syncZombie (_Dga_window dgawin);
830N/Aextern void dgai_mbsmemb_syncMbufset (_Dga_window dgawin);
830N/Aextern void dgai_mbsmemb_syncRendBuf (_Dga_window dgawin);
830N/Aextern void dgai_mbsmemb_figureDerivChgs (_Dga_window dgawin);
830N/Aextern void dgai_mbsmemb_notify (_Dga_window dgawin);
830N/Aextern void dgai_mbsmemb_devinfo_update(_Dga_window dgawin);
830N/A
830N/A
830N/A/*
830N/A** Internal window update routines
830N/A*/
830N/A
830N/Aextern Dga_window dgai_win_grab_common (Display *dpy, int devfd, Dga_token token, int drawableGrabber);
830N/Aextern int dgai_win_update (_Dga_window dgawin, short bufIndex);
830N/Aextern void dgai_win_clip_update(_Dga_window dgawin);
830N/Aextern void dgai_win_curs_update(_Dga_window dgawin);
830N/Aextern void dgai_win_rtn_update(_Dga_window dgawin);
830N/Aextern void dgai_win_syncChanges (_Dga_window dgawin, DgaLastSeqsPtr pLastSeqs);
830N/Aextern int dgai_win_visibility(Dga_window wini);
830N/A
830N/A/*
830N/A** Internal multibuffer update routines
830N/A*/
830N/A
830N/Aextern int dgai_mbuf_update (_Dga_window dgawin, short bufIndex);
830N/Aextern void dgai_vmbuf_syncChanges (_Dga_window dgawin, DgaLastSeqsPtr pLastSeqs, short bufIndex);
830N/Aextern void dgai_nmbuf_syncChanges (_Dga_window dgawin);
830N/Aextern void dgai_nmbuf_cache_update(_Dga_window dgawin);
830N/Aextern void dgai_nmbuf_devinfo_update(_Dga_window dgawin);
830N/A
830N/A/*
830N/A** Internal multibuffer set routines
830N/A*/
830N/A
830N/Aextern DgaMbufSetPtr dgai_mbufset_create (_Dga_window dgawin);
830N/Aextern void dgai_mbufset_incref (DgaMbufSetPtr pMbs);
830N/Aextern void dgai_mbufset_decref (DgaMbufSetPtr pMbs);
830N/A
830N/A/*
830N/A** Internal mbufset member inquiry routines
830N/A*/
830N/A
830N/Aextern Display * dgai_mbsmemb_display (_Dga_window dgawin);
830N/Aextern char * dgai_mbsmemb_devname (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_devfd (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_depth (_Dga_window dgawin);
830N/Aextern void dgai_mbsmemb_set_client_infop (_Dga_window dgawin, void *client_info_ptr);
830N/Aextern void * dgai_mbsmemb_get_client_infop (_Dga_window dgawin);
830N/Aextern void * dgai_mbsmemb_devinfo (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_sitechg (_Dga_window dgawin, int *reason);
830N/Aextern void dgai_mbsmemb_sitesetnotify (_Dga_window dgawin,
830N/A DgaSiteNotifyFunc site_notify_func,
830N/A void *client_data);
830N/Aextern void dgai_mbsmemb_sitegetnotify (_Dga_window dgawin,
830N/A DgaSiteNotifyFunc *site_notify_func,
830N/A void **client_data);
830N/Aextern int dgai_mbsmemb_site (_Dga_window dgawin);
830N/Aextern void * dgai_mbsmemb_address (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_linebytes (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_bitsperpixel (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_clipchg (_Dga_window dgawin);
830N/Aextern void dgai_mbsmemb_bbox(_Dga_window dgawin, int *xp, int *yp,
830N/A int *widthp, int *heightp);
830N/Aextern int dgai_mbsmemb_visibility (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_empty (_Dga_window dgawin);
830N/Aextern short * dgai_mbsmemb_clipinfo (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_singlerect (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_obscured (_Dga_window dgawin);
830N/Aextern u_short dgai_mbsmemb_borderwidth (_Dga_window dgawin);
830N/Aextern void dgai_mbsmemb_curshandle (_Dga_window dgawin, DgaCursTakeDownFunc take_down_func,
830N/A void *client_data);
830N/Aextern int dgai_mbsmemb_rtngrab (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_rtnungrab (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_rtnchg (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_rtnactive (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_rtncached (_Dga_window dgawin);
830N/Aextern void * dgai_mbsmemb_rtndevinfop (_Dga_window dgawin);
830N/Aextern void dgai_mbsmemb_rtndevtype (_Dga_window dgawin, u_char *type,
830N/A char **name);
830N/Aextern void dgai_mbsmemb_rtndimensions (_Dga_window dgawin, short *width,
830N/A short *height, u_int *linebytes);
830N/Aextern int dgai_mbsmemb_rtnbitsperpixel(_Dga_window dgawin);
830N/Aextern void * dgai_mbsmemb_rtnpixels (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_mbchg (_Dga_window dgawin, int *reason);
830N/Aextern void dgai_mbsmemb_mbsetnotify (_Dga_window dgawin, DgaMbNotifyFunc mb_notify_func,
830N/A void *client_data);
830N/Aextern void dgai_mbsmemb_mbgetnotify (_Dga_window dgawin, DgaMbNotifyFunc *mb_notify_func,
830N/A void **client_data);
830N/Aextern int dgai_mbsmemb_mbaccessmode (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_mbsitetypeconst (_Dga_window dgawin);
830N/Aextern void dgai_mbsmemb_mbsetrendbufnotify (_Dga_window dgawin,
830N/A DgaRendBufNotifyFunc rb_notify_func,
830N/A void *client_data);
830N/Aextern void dgai_mbsmemb_mbgetrendbufnotify (_Dga_window dgawin,
830N/A DgaRendBufNotifyFunc *rb_notify_func,
830N/A void **client_data);
830N/Aextern int dgai_mbsmemb_ovlstatechg (_Dga_window dgawin);
830N/Aextern int dgai_mbsmemb_ovlstate (_Dga_window dgawin);
830N/Aextern void dgai_mbsmemb_setovlstatenotify (_Dga_window dgawin,
830N/A DgaOvlStateNotifyFunc ovlstate_notify_func,
830N/A void *client_data);
830N/Aextern void dgai_mbsmemb_getovlstatenotify (_Dga_window dgawin,
830N/A DgaOvlStateNotifyFunc *ovlstate_notify_func,
830N/A void **client_data);
830N/A
830N/A
830N/A/*
830N/A** Internal pixmap inquiry routines
830N/A*/
830N/A
830N/A/* TODO: dhuff: must supply */
830N/A
830N/Aextern int dgai_pix_update(Dga_drawable dgadraw, short bufIndex);
830N/Aextern Display * dgai_pix_display (_Dga_pixmap dgapix);
830N/Aextern char * dgai_pix_devname (_Dga_pixmap dgapix);
830N/Aextern int dgai_pix_devfd (_Dga_pixmap dgapix);
830N/Aextern int dgai_pix_depth (_Dga_pixmap dgapix);
830N/Aextern void dgai_pix_set_client_infop (_Dga_pixmap dgapix, void *client_info_ptr);
830N/Aextern void * dgai_pix_get_client_infop (_Dga_pixmap dgapix);
830N/Aextern void * dgai_pix_devinfo (_Dga_pixmap dgapix);
830N/Aextern int dgai_pix_sitechg (_Dga_pixmap dgapix, int *reason);
830N/Aextern void dgai_pix_sitesetnotify (_Dga_pixmap dgapix,
830N/A DgaSiteNotifyFunc site_notify_func,
830N/A void *client_data);
830N/Aextern void dgai_pix_sitegetnotify (_Dga_pixmap dgapix,
830N/A DgaSiteNotifyFunc *site_notify_func,
830N/A void **client_data);
830N/Aextern int dgai_pix_site (_Dga_pixmap dgapix);
830N/Aextern void * dgai_pix_address (_Dga_pixmap dgapix);
830N/Aextern int dgai_pix_linebytes (_Dga_pixmap dgapix);
830N/Aextern int dgai_pix_bitsperpixel (_Dga_pixmap dgapix);
830N/Aextern int dgai_pix_clipchg (_Dga_pixmap dgapix);
830N/Aextern void dgai_pix_bbox(_Dga_pixmap dgapix, int *xp, int *yp,
830N/A int *widthp, int *heightp);
830N/Aextern int dgai_pix_empty (_Dga_pixmap dgapix);
830N/Aextern short * dgai_pix_clipinfo (_Dga_pixmap dgapix);
830N/A
830N/A#endif /* _DGA_INTERNAL_H */
830N/A