dga_internal.h revision 943
/* Copyright (c) 1993, 1997, Oracle and/or its affiliates. All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice (including the next * paragraph) shall be included in all copies or substantial portions of the * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * dga_internal.h - Sun Direct Graphics Access interface internal include file /* Note that _Dga_window, _Dga_cmap, _Dga_pixmap are all internal declarations * for the externally visible Dga_window, Dga_cmap and Dga_pixmap ( no leading * underscore). In the externally visible include file, these are all declared * as void * and thus quite opaque. * Note: there is a DGA_FAST_DRAW_LOCK() macro that also access the * fields in struct dga_window and dga_pixmap but is not currently in dga.h. * Consider this macro before modifying fields. /* used only to get at the drawable type. After that, we vector off to either a window or pixmap routine */ int w_lockcnt;
/* lock count for nested locks */ int (*
w_lock_func)();
/* alternate function for locking */ int w_modif;
/* cached result of update check */ void *
w_info;
/* pointer to shared memory */ short *
w_clipptr;
/* client virtual ptr to clip array. */ int w_infofd;
/* fd of shared memory file */ int w_devfd;
/* fd of framebuffer */ /* cursor grabber info */ void *
curs_info;
/* pointer to client's cursor info */ int curs_fd;
/* Client side file descriptor */ /* Ancillay Buffer info */ /* double buffering info */ /* retained window grabber info */ int rtn_fd;
/* Client side fd for shared memory */ void *
rtn_info;
/* Ptr to Shared memory structure */ void *
rtn_pixels;
/* Client ptr to Client pixel mapping */ ** New fields for drawable grabber. /* notification functions */ /* real lock subject - the win/mbuf currently locked by the client */ /* effective lock subject - the actual lock subject. This will be used by the DGA state inquiry functions called by the client. If the win/mbuf is not aliased, eLockSubj will be the same as rLockSubj */ /* previous effective lock subject - the lock subject for which a change was last signalled to the client. It is assumed that the client synchronized its state to this lock subject. This is always true for well-behaved DGA clients */ /* mbChgReason is the reason for an mbufset change. prevWasMbuffered is used to help us figure this out. It is set during the update phase and may be used during the inquiry phase */ /* used during update phase to indicate what state changed */ /* reason for any site change */ /* Has the window been previously locked? */ * If the window is an overlay, the isOverlay flag will be set to * true and the s_ovlstate_p pointer will point to the ovlstate * flag on the shared page and the s_ovlshapevalid_p pointer will * point to the w_ovl_shape_valid flag. /* For the threaded case, this stores the real change counts while * c_wm_chngcnt[] is used to force the update function to be called. void *
cm_info;
/* pointer to shared memory */ int cm_infofd;
/* fd of shared memory file */ * (if not framebuffer) */ SunWindows default cmap window */ SunWindows installed cmap window */ * When the pixmap interface is made public, this declaration should be * Also the lock routiens currently in pix_grab,c should be made into * macros and added to dga.h int p_lockcnt;
/* lock count for nested locks */ int (*
p_lock_func)();
/* alternate function for locking */ int p_modif;
/* cached result of update check ?? */ void *
p_infop;
/* pointer to shared pixmap memory*/ /* TODO: Why are the next two entries in here? It's not clear to me why * the client side cares if the shpx_dir changes. The only time a pixmap * is removed from the directory structure is when it is destroyed and * then the obsolete flag is set. */ void *
p_shpx_dir;
/* Client's ptr to the shpx dir */ void *
p_shpx_client;
/* Client's ptr to the shpx client struct */ char pad0;
/* padding to align to int */ int p_infofd;
/* fd of shared memory file */ /* used during update phase to indicate what state changed */ /* reason for any site change */ /* For the threaded case, this stores the real change counts while * c_chngcnt[] is used to force the update function to be called. /* Pixmap grabber routines - these are not Public yet */ /* These are always going to be private routines to be backward ** Internal mbuf grab routine ** Internal mbufset member update routines ** Internal window update routines ** Internal multibuffer update routines ** Internal multibuffer set routines ** Internal mbufset member inquiry routines ** Internal pixmap inquiry routines /* TODO: dhuff: must supply */ #
endif /* _DGA_INTERNAL_H */